最近有需求使用ajax访问使用Falsk编写的同服务器的api,,但当我照往常一样访问的时候,,出现了未曾遇见的报错:
Access to XMLHttpRequest at ‘http://localhost:5000/api/msg’ from origin ‘http://localhost:63342’ has been blocked by CORS policy: No ‘Access-Control-Allow-Origin’ header is present on the requested resource.
经过多方资料搜寻, 终于找到了简单的解决方法。Flask中自带了跨域包,名为flask-cors,只需使用pip install flask-cors命令安装这个包然后使用其中的CORS类即可,代码如下:
from flask_cors import CORS
app = Flask(__name__)
CORS(app)
此时就可以正常访问链接了,跨域问题Flask会自动解决。
如果不需要全局使用的话,还有种复杂的方法:
@app.route('test_route')
def cors_test(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,OPTIONS')
return response
经个人测试,此种方法并不具有普遍适用性,比如这次的问题就没有通过此种方法解决。

本文介绍了如何在使用Flask开发API时遇到跨域问题,并展示了使用flask-cors库实现跨域访问的简单方法。重点讲解了添加CORS头来解决'Access-Control-Allow-Origin'错误的步骤,以及不同应用场景下CORS设置的注意事项。
3595





