如何在Flask中更改CORS标头?

时间:2018-07-28 20:47:12

标签: javascript python ajax flask cors

我试图构建一个应用程序来向其他域的网站提供搜索查询。在本地主机上进行实验时,我遇到了一个CORS错误:跨源请求被阻止...(原因:缺少CORS标头'Access-Control-Allow-Origin')。经过一番研究,我觉得当我尝试进行部署时,此错误将跟随我。

显而易见的解决方案是添加标头,现在使用*值。我已经在Flask中四处寻找了可能的方法,但是我不知道如何实现。

https://www.w3.org/wiki/CORS_Enabled W3只是建议打印“ Access-Control-Allow-Origin:*”。不用说,这是行不通的。他们必须在更基本的地方使用python ...

Flask - malformed header from script 'app.cgi': Bad header 这个问题看似相关,因为它确实触及了CGI标头(甚至是那个)和Flask,但是我并没有真正处理脚本中的任何响应。

作为参考,这是我的烧瓶脚本:

app = Flask(__name__)

@app.route("/search/<tag>")
def result(tag):
    return str(fullSearch(tag))

if __name__ = "__main__":
    app.run()

当我手动访问“ / search / anything”时,此脚本确实起作用并且正确返回一个字符串化的json。 这是我的Ajax电话:

let request = new XMLHttpRequest();
request.open("GET", "http://127.0.0.1:5000/search/anything");
request.onload = function(){
    console.log(JSON.parse(request.responseText));
}
request.send();

再次,它返回CORS错误。 如何更新CORS标头?

1 个答案:

答案 0 :(得分:0)

也许您可以尝试在项目中添加的flask_cors软件包

from flask import Flask
from flask_cors import CORS

app = Flask(__name__)
CORS(app)

@app.route("/search/<tag>")
def result(tag):
    return str(fullSearch(tag))

if __name__ = "__main__":
    app.run()