【问题标题】:Http to https redirect blocked by CORS policyHttp 到 https 重定向被 CORS 策略阻止
【发布时间】:2018-10-12 10:45:57
【问题描述】:

我正在尝试从运行在具有 https 的网站上的 chrome 开发人员工具控制台窗口向 localhost 服务器发出 GET(或 POST)请求(在本例中为 outlook.com,但对于任何 https 都是相同的)。如果我从在 http 上运行的网站运行相同的代码,它就可以正常工作。

我得到的错误:

无法加载 http://127.0.0.1:5000/:从“http://127.0.0.1:5000/”重定向到“https://127.0.0.1:5000/”已被 CORS 策略阻止:请求的资源上不存在“Access-Control-Allow-Origin”标头。 Origin 'https://outlook.live.com' 因此不允许访问。

我发现 https 到 http 通信是不可能的,但是在 https 上运行烧瓶服务器也没有帮助,在这种情况下 Flask 甚至无法识别传入的请求。

我有一个 Flask 应用程序正在运行,代码:

from flask import Flask
from flask import request
from flask_cors import CORS

app = Flask(__name__)

CORS(app)

@app.route("/", methods=['GET', 'POST'])
def foo():
    return "bar"


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

我用于请求的 javascript:

var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
        console.log(xhttp.responseText);
    }
};
xhttp.open("GET", "http://127.0.0.1:5000/", true);
xhttp.send();

我知道有很多类似的问题,但是发布的解决方案都没有对我有用,如何从运行在 https 网站上的 chrome 开发人员工具创建成功的 GET 或 POST 请求到 localhost 服务器(最好是 Flask) ?

【问题讨论】:

    标签: http redirect https cors flask-cors


    【解决方案1】:

    使用 ssl_context='adhoc' 运行 Flask 应用以使用 https 时:

    是浏览器阻止了 https,因为证书不安全。

    这个答案(发布here)对我有用:

    不是为了生产

    只需将其粘贴到您的 chrome 中即可:

    chrome://flags/#allow-insecure-localhost 您应该会看到突出显示的文本:允许从本地主机加载的资源使用无效证书

    点击启用。

    另外,this blog post 解释了更多关于使用带有证书的 Flask。

    【讨论】:

      猜你喜欢
      • 2018-07-20
      • 2021-01-23
      • 2020-10-31
      • 2023-03-15
      • 1970-01-01
      • 2018-01-09
      • 2017-07-05
      • 1970-01-01
      • 2020-09-11
      相关资源
      最近更新 更多