Http到https重定向被CORS策略阻止

时间:2018-05-02 10:41:59

标签: http redirect https cors flask-cors

我正在尝试从运行在https网站上的Chrome开发者工具控制台窗口向本地主机服务器发出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政策阻止:No' Access-Control-Allow-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请求到本地主机服务器(最好是Flask) ?

1 个答案:

答案 0 :(得分:0)

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

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

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

  

不适合PROD

     

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

     

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

     

单击“启用”。

此外,this blog post详细介绍了如何将Flask与证书一起使用。