Django设置csrftoken两次

时间:2015-08-25 14:44:39

标签: python django nginx

我有一个Django应用程序,我目前正在尝试设置我的生产服务器。 但是,每次我尝试访问管理页面时,它都会进入重定向循环(意味着页面不断将我发送回登录)。

10.0.0.2 - - [25/Aug/2015:17:36:01 +0300] "POST /admin/login/?next=/admin/ HTTP/1.1" 302 5 
10.0.0.2 - - [25/Aug/2015:17:36:01 +0300] "GET /admin/ HTTP/1.1" 302 5 
10.0.0.2 - - [25/Aug/2015:17:36:01 +0300] "GET /admin/login/?next=/admin/ HTTP/1.1" 200 879 

我做了一些搜索,我怀疑原因是我对请求和响应有不同的csrf标记(参见附图)。

我真的不知道为什么会这样,并且在开发环境中一切正常。我也在几个浏览器中尝试了这个,删除了缓存,对我的数据库进行了重置......这些都没有。

我正在使用django 1.8和nginx以及uwsgi。

enter image description here

1 个答案:

答案 0 :(得分:1)

所以,我终于弄清楚出了什么问题。在我的settings.py文件中,我有以下设置:

SESSION_COOKIE_SECURE = True
CSRF_COOKIE_SECURE = True

这阻止了浏览器设置正确的sessionid / csrftoken。

要使这些工作正常,您还需要其他一些东西,例如CSRF_COOKIE_DOMAIN和SESSION_COOKIE_DOMAIN。我也有这些,但你还需要你的服务器来确保安全(https)连接......

鉴于我只需要这个用于学校项目,https不是强制性的,所以我只删除了前两个设置,现在一切都顺利进行。

感谢所有试图帮助我的人。