Flask CORS仅在某些路线上发布

问题描述 投票:0回答:1

我已经使用Flask构建了API,现在我正在尝试从Vue.js前端获取和发布数据。我正在使用axios进行请求。

正如预期的那样,弹出了CORS错误,因此我查找了此问题,并找到了一个临时解决方案:

@app.after_request
    def after_request(response):
        response.headers.add('Access-Control-Allow-Origin', '*')
        response.headers.add('Access-Control-Allow-Headers', 'Content-Type,Authorization')
        response.headers.add('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE')
        print(response.data)
        return response

我在__init__.py上添加了它,并且对于某些请求(GET和POST)都可以正常工作。在烧瓶日志中,我可以看到OPTIONS请求返回状态200,并且可以在前端很好地访问数据。

但是,当我请求某些蓝图中的路由时,无论我做什么,上面的函数只会返回308 REDIRECT。使用print(response.data)行,我可以看到返回的重定向与我所请求的链接完全相同。

我还尝试了cross_origin()装饰器和初始化CORS对象,但都没有任何效果。我也尝试将after_request函数移到蓝图中,如下所示:

@posting_bp.after_request
        def after_request(response):
            response.headers.add('Access-Control-Allow-Origin', '*')
            response.headers.add('Access-Control-Allow-Headers', 'Content-Type,Authorization')
            response.headers.add('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE')
            print(response.data)
            return response

但是在这种情况下,它甚至从未被调用(不会触发打印)。>>

感谢您的反馈!

编辑:为更全面,确切的控制台错误如下:

Access to XMLHttpRequest at 'http://localhost:5000/user/ttt/posts' from origin 'http://localhost:3000' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: Redirect is not allowed for a preflight request.

我已经使用Flask构建了API,现在我正在尝试从Vue.js前端获取和发布数据。我正在使用axios的请求。正如预期的那样,弹出了CORS错误,因此我查找了此问题,...

python post flask cors blueprint
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.