我已经使用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错误,因此我查找了此问题,...