【问题标题】:Flask CORS stopped allowing access to resourcesFlask CORS 停止允许访问资源
【发布时间】:2021-05-08 14:05:13
【问题描述】:

就在几天前,我不需要对 Flask-CORS 扩展进行任何修改 使用。显然我现在这样做了。

控制台在 POST 请求时给我这个错误:

Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://localhost:5000/blog/posts. (Reason: CORS preflight response did not succeed)

我的一个配置:

class BaseConfig:
    CORS_HEADERS = 'Content-Type'
    ...
    ...

__init__.py:

...
...
from flask_cors import CORS

cors = CORS()

def create_app(script_info=None):
    app = Flask(__name__)
    app.config.from_object(BaseConfig)
    
    cors.init_app(app, resources={r"/*": {"origins": "*"}})
    ...
    ...
    return app

我的蓝图:

from flask_cors import cross_origin
...
...

class MyClass(Resource):

    def get(self):
       ...
       ...

    @cross_origin()
    def post(self):
       ...
       ...

几天前,我所要做的就是初始化扩展程序,剩下的事情就由它完成了。现在,即使明确指定我允许从任何地方访问,我也会遇到错误。一旦这可行,我会将其缩小到仅一个域,但这仍然会引发错误。

我尝试使用logging.getLogger('flask_cors').level = logging.DEBUG 获得一些调试输出

127.0.0.1 - - [04/Feb/2021 11:02:31] "OPTIONS /blog/posts HTTP/1.1" 404 -

有什么建议吗?

【问题讨论】:

  • 可能是因为您更新了 Chrome 浏览器。
  • 我不使用 Chrome。我是 Firefox 用户。

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


【解决方案1】:

我建议你使用下面的 sn-p,你不需要再为 CORS 使用装饰器了。但要小心,如果你使用 Nginx 作为反向代理,你也必须为 Nginx 添加适当的标头。

cors = CORS(flask_app, resources={r"/api/*": {"origins": "*", "allow_headers": "*", "expose_headers": "*"}})

【讨论】:

    【解决方案2】:

    根据docs,尝试这样初始化

    cors = CORS(app, resources={r"/*": {"origins": "*"}})
    

    还要确保删除浏览器中的缓存和所有内容。

    【讨论】:

    • 我之前尝试过使用默认值。这就是我在此处发布的原因,因为我在文档中发现的内容没有帮助。
    猜你喜欢
    • 2017-12-28
    • 2020-04-18
    • 2021-09-07
    • 2019-02-09
    • 2016-06-02
    • 2021-11-03
    • 2018-11-08
    • 2020-05-03
    • 2016-06-27
    相关资源
    最近更新 更多