最近有需求使用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
经个人测试,此种方法并不具有普遍适用性,比如这次的问题就没有通过此种方法解决。