Flask CORS 停止允许访问资源

问题描述

就在几天前,我不需要对 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 -

有什么建议吗?

解决方法

根据docs,尝试这样初始化

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

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

,

我建议您使用以下代码段,并且您不再需要为 CORS 使用装饰器。但是如果您使用 Nginx 作为反向代理,请注意,您还必须为 Nginx 添加适当的标头。

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...