django 使用 heroku 设置变量 SECURE_PROXY_SSL_HEADER

Posted

技术标签:

【中文标题】django 使用 heroku 设置变量 SECURE_PROXY_SSL_HEADER【英文标题】:django setting variable SECURE_PROXY_SSL_HEADER with heroku 【发布时间】:2016-09-29 02:16:34 【问题描述】:

我正在尝试使用 heroku 在 django 1.8 上设置与 https/ssl 相关的变量。但在 Django 1.8 教程中,它说我应该小心设置这个变量,特别是 "SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')"

在 django 1.8 教程中它说

警告

如果您设置此选项,您可能会在您的网站中打开安全漏洞 不知道你在做什么。如果你没有设置它,当你 应该。认真的。

在设置之前确保以下所有条件都为真(假设 上例中的值):

您的 Django 应用位于代理后面。 您的代理从所有传入请求中去除 X-Forwarded-Proto 标头。换句话说,如果最终用户在他们的 请求,代理将丢弃它。 您的代理设置 X-Forwarded-Proto 标头并将其发送给 Django,但仅限于最初通过 HTTPS 传入的请求。

如果其中任何一个不正确,您应该将此设置设置为无 并找到另一种确定 HTTPS 的方法,可能是通过自定义 中间件。

当我使用 heroku 时,是否满足所有这些条件?我应该继续吗?

【问题讨论】:

【参考方案1】:

是的 - 你应该没问题 - 请参阅 heroku 文档:https://devcenter.heroku.com/articles/http-routing#heroku-headers

【讨论】:

以上是关于django 使用 heroku 设置变量 SECURE_PROXY_SSL_HEADER的主要内容,如果未能解决你的问题,请参考以下文章

.env 文件中的环境变量在 django、heroku 的本地迁移期间不可用

Django频道使用redis设置在heroku泄漏内存

使用 heroku 在生产中部署媒体和静态的 django 设置和 url 应该是啥样的?

在 Heroku 中使用 Sendgrid 为 Django 应用程序设置电子邮件

Heroku django 使用环境设置管理 shell (db, vars)

使用 South 在 Heroku 上设置 Django 时遇到问题 - 不断出现 ProgrammingError:关系不存在