【问题标题】:Django request.is_secure returns wrong value for redirected methodsDjango request.is_secure 为重定向方法返回错误值
【发布时间】:2012-01-12 02:29:28
【问题描述】:

我正在尝试为 django 应用程序 (https://bitbucket.org/yilmazhuseyin/django-sslredirector) 编写一个 ssl 重定向实用程序。我的问题是当我将页面从 http 重定向到 https 时,我无法理解我处于安全连接状态(当我调用 request.is_secure 时它返回 false)。我认为对此有一个 hack,不知何故称为 Webfaction,我无法真正了解它是如何工作的。这是webfaction案例的is_secure方法

   def _is_secure(self, request):
        if request.is_secure():
        return True

        #Handle the Webfaction case until this gets resolved in the request.is_secure()
        if 'HTTP_X_FORWARDED_SSL' in request.META:
        return request.META['HTTP_X_FORWARDED_SSL'] == 'on'

我的问题是当我将我的页面从 http 重定向到 https 时,request.is_secure 方法仍然返回 false(尽管我在 https 上的事件)并且我不断地将我的页面重定向到 https。 有什么方法可以了解我是否只是从 https 重定向?

我能找到的最佳来源是http://djangosnippets.org/snippets/880/,但它不适合我

【问题讨论】:

    标签: django redirect ssl


    【解决方案1】:

    如果您的流量通过某种代理,您使用 SSL 的事实可能会被隐藏。但是,代理通常会设置某种 HTTP 标头(或者您可以对其进行配置)。一种选择是 HTTP_X_FORWARDED_SSL。如果您使用 https,Heroku 会将 HTTP_X_FORWARDED_PROTO 设置为 https。

    【讨论】:

    • 我可以确认这是heroku的解决方案
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-06
    • 2019-10-08
    • 1970-01-01
    • 2020-08-10
    • 2016-02-01
    • 1970-01-01
    • 2023-03-10
    相关资源
    最近更新 更多