我正在为 Facebook 编写一个应用程序,它需要安全。初始页面,https://myapp.com ,加载非常好。
但是,当我单击指向 https://myapp.com/link 的链接时, Chrome 提示该应用试图从不安全的来源加载。我在控制台中收到以下消息:
[已阻止] 位于“https://www.facebook.com/page/app_###”的页面已通过 HTTPS 加载,但运行了来自“http://myapp.com/link/”的不安全内容:此内容也应通过 HTTPS 加载。”
现在链接是带有 https 前缀的绝对 URL,但显然该页面正在尝试从 http 版本加载。
我访问了域本身并检查了 Chrome 控制台中的“网络”选项卡以查看发生了什么。发生以下情况:
- GET 到 https://myapp.com/link是 301,永久移动。
- 然后重定向到http://myapp.com/link
据我所知,我的 python 代码中没有任何东西可以实现这种情况,所以我怀疑是 Heroku 的某些功能导致了这种情况,但我没能找到其他人遇到这个问题。
作为旁注,我使用 Flask-SSLify 将重定向添加回 https 版本。此重定向有效,但 Chrome 仍会阻止该页面,因为它通过了不安全的版本。
最佳答案
我觉得在发布问题五分钟后解决这个问题很愚蠢,但这有点晦涩。
原来问题是我试图访问的页面是“https://myapp.com/link/”,尾部有斜杠。
“https://myapp.com/link”重定向到“http://myapp.com/link/”。
我不知道为什么这个重定向没有保留协议(protocol),它可能是 Flask 或 Heroku,但我怀疑它是 Flask。不管它看起来像一个错误。
希望这最终能帮助到其他人。
关于ssl - Heroku:Python Flask 应用程序——自动从 https 重定向到 http,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20842093/