我最初的问题是如何为Django登录页面启用HTTPS,以及唯一的响应,建议我 - 将整个站点设置为仅限HTTPS.
鉴于我正在使用Django 1.3和nginx,那么使网站成为HTTPS的正确方法是什么?
一个回复提到了一个中间件解决方案,但有一点需要注意:
Django在维护POST数据时无法执行SSL重定向.请构建您的视图,以便重定向仅在GET期间发生.
有关nginx重写为https的服务器故障的问题,还提到了POST丢失数据的问题,而且我对nginx不太熟悉,无法确定解决方案的工作情况.
而且EFF建议只使用HTTPS,请注意:
应用程序必须在设置cookie时设置Secure属性.此属性指示浏览器仅通过安全(HTTPS)传输发送cookie,从不安全(HTTP).
像Django-auth这样的应用程序是否能够将cookie设置为安全?或者我是否必须编写更多中间件?
那么,在以下方面,配置Django/nginx组合以实现仅HTTPS的最佳方法是什么?
编辑 - 我在测试多个浏览器时发现的另一个问题.假设我有一个URL https://mysite.com/search/,它有一个搜索表单/按钮.我按一下按钮,程序在Django像往常一样的形式,做一个Django HttpResponseRedirect来http://mysite.com/search?results="foo".https://mysite.com/search?results="foo"根据需要,Nginx将其重定向到.
但是 - 重定向发生时,Opera有一个可见的闪存.它发生在每次搜索,即使是相同的搜索词(我猜https真的不缓存:)更糟糕的是,当我在IE中测试它时,我首先得到的消息:
您将被重定向到不安全的连接 - 继续?
单击"是"后,紧接着是:
您即将通过安全连接查看页面 - 继续吗?
虽然第二个IE警告可以选择关闭它 - 但第一个警告没有,所以每当有人进行搜索并被重定向到结果页面时,它们至少会收到一条警告消息.