Http 到 https 重定向被 CORS 策略阻止
Posted
技术标签:
【中文标题】Http 到 https 重定向被 CORS 策略阻止【英文标题】:Http to https redirect blocked by CORS policy 【发布时间】: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) ?
【问题讨论】:
【参考方案1】:使用 ssl_context='adhoc'
运行 Flask 应用以使用 https 时:
是浏览器阻止了 https,因为证书不安全。
这个答案(发布here)对我有用:
不是为了生产
只需将其粘贴到您的 chrome 中即可:
chrome://flags/#allow-insecure-localhost
您应该会看到突出显示的文本:允许从本地主机加载的资源使用无效证书点击启用。
另外,this blog post 解释了更多关于使用带有证书的 Flask。
【讨论】:
以上是关于Http 到 https 重定向被 CORS 策略阻止的主要内容,如果未能解决你的问题,请参考以下文章
XMLHttprequest 无法加载 [link]。从 [link] 重定向到已被 laravel 5 中的 CORS 策略阻止
尝试使用 next-connect 在 Next.js 中从 http://localhost:3000 重定向到 https://api.twitter.com 时出现 CORS 错误?