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 不是强制性的,所以我只是删除了前两个设置,现在一切运行顺利。
感谢所有试图帮助我的人。
我有一个 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 不是强制性的,所以我只是删除了前两个设置,现在一切运行顺利。
感谢所有试图帮助我的人。