Django 两次设置 csrftoken

Django sets csrftoken twice

我有一个 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 令牌(见附图)。

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

我正在使用带有 nginx 和 uwsgi 的 django 1.8。

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

SESSION_COOKIE_SECURE = True
CSRF_COOKIE_SECURE = True

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

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

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

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