我有一个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。
答案 0 :(得分:1)
所以,我终于弄清楚出了什么问题。在我的settings.py
文件中,我有以下设置:
SESSION_COOKIE_SECURE = True
CSRF_COOKIE_SECURE = True
这阻止了浏览器设置正确的sessionid / csrftoken。
要使这些工作正常,您还需要其他一些东西,例如CSRF_COOKIE_DOMAIN和SESSION_COOKIE_DOMAIN。我也有这些,但你还需要你的服务器来确保安全(https)连接......
鉴于我只需要这个用于学校项目,https不是强制性的,所以我只删除了前两个设置,现在一切都顺利进行。
感谢所有试图帮助我的人。