google chrome 下django用户登录失败的问题
2011-04-29 00:25
435 查看
问题:
django做的网站,用chrome访问时,有50%的概率会发生用户登录失败,request.user依然是匿名用户的情况。Firefox没问题。
分析:
痛苦了半天,静下心分析原因,发现最后页面在登录重定位后,chrome在请求页面时没有提交session。具体的访问过程是这样:
1 /accounts/login/ 返回 302 FOUND,响应头中Location指向 / , 返回sessionid
2 / 返回301 MOVED PERMANENTLY, 响应头中Location指向 /myapp/, 未返回 sessionid
3 /myapp/ 返回200 OK, 返回具体页面。
这个过程中Firefox记下了sessionid, 在第3步中提交了;而chrome未记录,在第三步中未提交,导致问题。
解决:
问题的关键在于不同浏览器处理两次重定位的不同(Firefox聪明的记下了302那次请求的会话ID,而chrome没有), 之所以有两次重定位,是因为我在urls.py直接把 / 映射到了 /myapp/,而在login.html中设置 next="/"。 如果只重定位一次,在login.html中设置 next="/myapp/",问题就迎刃而解了。
django做的网站,用chrome访问时,有50%的概率会发生用户登录失败,request.user依然是匿名用户的情况。Firefox没问题。
分析:
痛苦了半天,静下心分析原因,发现最后页面在登录重定位后,chrome在请求页面时没有提交session。具体的访问过程是这样:
1 /accounts/login/ 返回 302 FOUND,响应头中Location指向 / , 返回sessionid
2 / 返回301 MOVED PERMANENTLY, 响应头中Location指向 /myapp/, 未返回 sessionid
3 /myapp/ 返回200 OK, 返回具体页面。
这个过程中Firefox记下了sessionid, 在第3步中提交了;而chrome未记录,在第三步中未提交,导致问题。
解决:
问题的关键在于不同浏览器处理两次重定位的不同(Firefox聪明的记下了302那次请求的会话ID,而chrome没有), 之所以有两次重定位,是因为我在urls.py直接把 / 映射到了 /myapp/,而在login.html中设置 next="/"。 如果只重定位一次,在login.html中设置 next="/myapp/",问题就迎刃而解了。
相关文章推荐
- SQL2005的sa用户登录问题 用户名无法登录sql2005"已成功与服务器建立连接,但是在登录过程中发生错误" 用户"sa"登陆失败,SQL Server错误:18456
- asp.net问题:用户"sa"登录失败 新解决方案
- 【J2EE】Java连接SQL Server 2000问题:“com.microsoft.sqlserver.jdbc.SQLServerException:用户'sa'登录失败。该用户与可信SQL Server连接无关联”
- 用户 'NT AUTHORITY\NETWORK SERVICE' 登录失败问题解决方案
- sql数据库连接:用户‘sa’登录失败问题破解(百度加个人总结)
- SQL连接问题,用户登录失败
- 利用Django中间件middleware解决用户未登录问题(转)
- Loadrunner 一个action中 两个用户登录 登录失败 cookie和header问题
- 【Java】【FAQ】Java连接SQL Server 2000问题:“com.microsoft.sqlserver.jdbc.SQLServerException:用户'sa'登录失败。
- 用户 'NT AUTHORITY\NETWORK SERVICE' 登录失败问题
- 解决了sql server 用户 sa 登录失败的问题
- 关于在django框架里取已登录用户名字的问题
- sql server2005建立用户,登录失败问题。
- IIS发布问题-用户 'IIS APPPOOL\DefaultAppPool' 登录失败
- 轻松解决asp.net用户ASPNET登录失败问题的方法分享
- Django用户登录中出现403问题的解决
- 轻松解决asp.net用户ASPNET登录失败的问题
- sql 2005 用户 sa 登录失败一系列问题
- 在安装discuz!nt时,数据库用户登录失败的问题时,sql server 2008 数据库更改登录模式(sql server 2008 混合登陆中SqlServer身份验证用户名密码)
- asp.net用户ASPNET登录失败的问题