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

标签 ssl heroku https flask http-status-code-301

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

  1. GET 到 https://myapp.com/link是 301,永久移动。
  2. 然后重定向到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/

相关文章:

python - 使用 python 将 ssl 包含到请求中

jakarta-ee - Glassfish 3 和导入签名的 SSL 证书问题

google-app-engine - 如何在GAE上设置中间证书?

java - 将 JavaMail 与 SSL 和 TLS 结合使用

apache - 如何在 Apache httpd 中将特定 URL 路由到 http 和 https,以及将其他 URL 路由到 https

ruby-on-rails - 使用 Mailgun gem 创建时的 ActionView::MissTemplate - Rails 4

ruby-on-rails - Heroku ruby​​ buildpack 错误 - 未定义的局部变量或方法 `install_language_pack_gems'

twitter-bootstrap - Glyphicons 未在 Production Rails 中正确预编译

HTTP Post 请求正文被解释为文本/纯文本而不是 url 编码。

https - 调试 Jetty https