From 29979fd57735e7662866c2596e9636efc319d9ec Mon Sep 17 00:00:00 2001 From: echoyang7 <50300391+echoyang7@users.noreply.github.com> Date: Mon, 8 Jan 2024 15:42:47 +0800 Subject: [PATCH] lyrebird support CORS (#818) Co-authored-by: yangfan100 --- lyrebird/mock/mock_server.py | 14 ++++++++++++-- requirements.txt | 1 + requirements.txt.lock | 1 + 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/lyrebird/mock/mock_server.py b/lyrebird/mock/mock_server.py index a704c619b..4ace8e05b 100644 --- a/lyrebird/mock/mock_server.py +++ b/lyrebird/mock/mock_server.py @@ -1,4 +1,5 @@ from flask import Flask, redirect, url_for, request +from flask_cors import CORS from . import context from .blueprints.apis import api from .blueprints.ui import ui @@ -45,8 +46,7 @@ def __init__(self): self.debug = False self.port = 9090 self._working_thread = None - self.app = Flask('MOCK') - + self.app = self.create_app() # async_mode = threading / eventlet / gevent / gevent_uwsgi self.socket_io = SocketIO(self.app, async_mode='threading', logger=False, cors_allowed_origins='*') @@ -87,6 +87,16 @@ def on_app_error(error): return application.make_fail_response(f'Mock server error:\n {trace}') + def create_app(self): + app = Flask('MOCK') + cors_resources = application.config.get('mock.server.cors.resources') + if cors_resources and isinstance(cors_resources, dict): + try: + CORS(app, resources=cors_resources) + except Exception as e: + _logger.warning(f"An error occurred while setting CORS. The default mode does not support CORS. Error msg: {e}") + return app + def run(self): server_ip = application.config.get('ip') _logger.log(60, f'Core start on http://{server_ip}:{self.port}') diff --git a/requirements.txt b/requirements.txt index 177d91000..4008f48ae 100644 --- a/requirements.txt +++ b/requirements.txt @@ -12,3 +12,4 @@ SQLAlchemy==1.3.22 aiohttp==3.8.3 netifaces==0.11.0 jsonschema==4.17.0 +Flask-Cors==4.0.0 diff --git a/requirements.txt.lock b/requirements.txt.lock index d5d37046a..6e1ef3f49 100644 --- a/requirements.txt.lock +++ b/requirements.txt.lock @@ -14,6 +14,7 @@ colorama==0.4.1 Flask==2.2.2 Flask-RESTful==0.3.9 Flask-SocketIO==5.3.0 +Flask-Cors==4.0.0 frozenlist==1.3.1 idna==2.8 importlib-metadata==5.0.0