【问题标题】:Flask-cors is not denying origins as configuredFlask-cors 没有按照配置拒绝来源
【发布时间】:2020-03-15 01:55:24
【问题描述】:

我正在尝试将 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 的请求,如配置。

有人遇到过这个问题吗?

【问题讨论】:

    标签: python-3.x flask flask-restplus flask-cors


    【解决方案1】:

    使用这个:

    cors.init_app(app, resources={r"*": {"origins": "*"}})
    

    【讨论】:

    • 虽然此代码可能会回答问题,但提供有关此代码为何和/或如何回答问题的额外上下文可提高其长期价值。
    【解决方案2】:

    我认为您没有使用 App Factory 模式正确初始化扩展。

    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

    【讨论】:

      猜你喜欢
      • 2020-11-16
      • 1970-01-01
      • 2013-01-26
      • 2020-12-09
      • 2019-11-08
      • 2020-09-18
      • 2015-06-04
      • 2017-07-31
      • 2020-02-04
      相关资源
      最近更新 更多