我正在尝试为django应用程序编写一个ssl重定向实用程序(https://bitbucket.org/yilmazhuseyin/django-sslredirector)。我的问题是当我将页面从http重定向到https时,我无法理解我在安全连接上(当我调用request.is_secure时它返回false)。我认为这有一个黑客攻击,不知怎的称为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/而且它对我不起作用
答案 0 :(得分:5)
如果您的流量通过某种代理,则可能会隐藏您使用SSL的事实。但是,代理通常会设置某种HTTP标头(或者您可以配置它来执行此操作)。一个选项是HTTP_X_FORWARDED_SSL。如果您使用https,Heroku会将HTTP_X_FORWARDED_PROTO设置为https。