Heroku:Python Flask 应用程序 - 自动从 https 重定向到 http

Posted

技术标签:

【中文标题】Heroku:Python Flask 应用程序 - 自动从 https 重定向到 http【英文标题】:Heroku: Python Flask app - automatically redirecting from https to http 【发布时间】:2014-01-17 11:44:42 【问题描述】:

我正在为 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 控制台中的“网络”选项卡以查看发生了什么。会发生以下情况:

    https://myapp.com/link 的 GET 是 301,已永久移动。 然后重定向到http://myapp.com/link

据我所知,我的 python 代码中没有任何东西可以实现这一点,所以我怀疑 Heroku 的某些功能导致了这种情况,但我找不到其他人遇到这个问题。

作为旁注,我使用 Flask-SSLify 将重定向添加回 https 版本。此重定向有效,但 Chrome 仍会阻止该页面,因为它通过了不安全的版本。

【问题讨论】:

【参考方案1】:

在发布问题五分钟后解决这个问题我觉得很愚蠢,但它有点晦涩。

事实证明,问题在于我试图访问的页面是“https://myapp.com/link/”,并带有斜杠。

“https://myapp.com/link”重定向到“http://myapp.com/link/”。

我不知道为什么这个重定向没有保留协议,它可能是 Flask 或 Heroku,尽管我怀疑它是 Flask。无论如何,这似乎是一个错误。

希望这最终能帮助其他人。

【讨论】:

以上是关于Heroku:Python Flask 应用程序 - 自动从 https 重定向到 http的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的 Flask 应用程序在 Heroku 上被检测为 node.js

Flask Python中的URL前缀使用Blueprint部署到Heroku

Python Flask Web API [Heroku]:它在本地运行,但在部署时显示应用程序错误

Python Flask(部署在 Heroku 上):ImportError: cannot import name 'secure_filename' from 'werkzeug' when de

使用 Heroku 部署 Flask

Flask-Login 和 Heroku 问题