如何在设置Access-Control-Allow-Origin标头时绕过预检检查?

时间:2018-03-20 19:24:32

标签: python ajax http flask cors

我有一个在127.0.0.1:5000上运行的烧瓶应用程序和另一个在127.0.0.1:8000上运行的网站。该网站有js功能向烧瓶应用程序发出一个帖子请求,试图将一些字典数据发布到烧瓶应用程序。在js函数中我使用的是ajax:

$.ajax({
    url: "http://127.0.0.1:5000/",
    method: "POST",
    headers: {
        'Access-Control-Allow-Origin':'*',},
    data: dict,
});

在烧瓶应用程序中:

@app.route('/',methods=['POST'])
def hello_world():
    ok = request.get_json()
    print(ok['id'])
    return '', 200

最初在ajax调用中,我没有放任何标题。但它促使我“Cross-Origin Request Blocked”。然后我添加标题,请求显然变成了一个OPTIONS请求,在谷歌搜索后,建议进行飞行前检查。我怎么能避免检查?或者为什么这个检查返回200代码并且实际的帖子请求没有通过?请给我一些帮助!我被困在这几个小时。谢谢! (p.s.我尝试安装flask_cors库并将其应用于烧瓶应用程序,但它也不起作用)

1 个答案:

答案 0 :(得分:0)

Access-Control-Allow-Origin标题是响应标题 - 您不会在请求中传递它(来自网站JS) - 您在Flask应用的响应中传递它

如果你在请求中传递它,它什么也不做,除了让浏览器发送预检OPTIONS请求,因为它不是基本的请求标题。

所以

  1. 从JS <​​/ li>中删除Access-Control-Allow-Origin请求标头
  2. Access-Control-Allow-Options: *响应标头添加到您的Flask应用中(我不确定您如何在Flask中添加响应标头)
相关问题