我试图将flask cors(3.0.8(与flask restplus(0.13.0(一起使用,允许一些来源,但拒绝其他来源,但cors不会拒绝任何跨来源请求。
我的体系结构是以一种使用3个文件来初始化我的应用程序的方式处理的:
1.app/__init__py(声明我的蓝图(
from flask_restplus import Api
from flask import Blueprint
...
BLUEPRINT = Blueprint("api", __name__)
API = Api(BLUEPRINT)
...
2.app/main/__init__.py(带有我的create_app函数,带有CORS(
...
def create_app()
app = Flask(__name__)
CORS(app, resources={r"/*": {"origins": r".*.mydomain.com"}})
...
3.manage.py(包含我的主进程(
from app.main import create_app
from app import BLUEPRINT
...
APP = create_app(os.getenv("APP_ENV", "dev"))
APP.register_blueprint(BLUEPRINT)
APP.app_context().push()
...
if __name__ == "__main__":
APP.run(host="0.0.0.0", port=80)
这种方法正在初始化我的应用程序,但我的API允许来自所有域的所有请求,而不是像配置的那样只允许来自something.my-domain.com的请求。
有人已经有这个问题了?
我认为您没有用AppFactory模式正确初始化扩展。
https://github.com/corydolphin/flask-cors/blob/master/flask_cors/extension.py#L131
在app/main/__init__.py中,尝试:
...
cors = CORS()
def create_app()
app = Flask(__name__)
cors.init_app(app, resources={r"/*": {"origins": r".*.mydomain.com"}})
...
完整示例:https://gitlab.com/testdriven/flask-react-auth/blob/master/services/users/project/init.py
使用此:
cors.init_app(app, resources={r"*": {"origins": "*"}})