Django链接和is_secure()

时间:2012-09-06 23:48:21

标签: python django https ssl

我正在将ssl添加到django应用程序中,并且遇到了一些问题,我的链接从https重定向到http。

最终我会让nginx将所有http请求重定向到https,但是现在我允许这两个。

所以如果你去https://www.mysite.com一切都很好。但是,点击“关于链接”:href ='/ about'会将您重定向到http://www.mysite.com/about

关于是超级基本(静态)页面。这是urls.py中的条目:

(r'^about/$', 'search.views.about'),

这是视图功能:

def about(request):
    return render_to_response('search/about.html')

不应该将我的用户定向到https://www.mysite.com/about/吗?我相信这与request.is_secure()方法有关。这总是对我来说是假的。我已经读过我需要设置os.environ ['HTTPS'] =“on”才能返回true。我该怎么做呢?我还需要做些什么吗?我应该将https硬编码到我的所有链接中吗?

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

原来我使用的nginx代码搞砸了一切。而不是:

if ($http_x_forwarded_port != 443) { rewrite ^ https://$http_host/; }

使用:

if ($http_x_forwarded_port != 443) { rewrite ^(.*) https://$host$1 permanent; 

进行重定向。因为第一个除了主人之外都会丢掉所有东西。