Chrome和Firefox不清除JSESSIONID cookie导致重定向循环。

4
我有一个应用程序在Apache Web服务器上接收HTTP/HTTPS请求,并将其传递给Tomcat。
最近,我在Google Chrome和Firefox浏览器中遇到了会话和重定向循环的问题,在某些用户注销或会话过期后。我设法追踪到问题,并发现浏览器没有清除JSESSIONID cookie。手动清除后,它就可以正常工作了。
我已经检查了Apache Web服务器的日志文件,发现了以下内容:
172.16.254.157 - - [06/Feb/2017:05:23:27 -0600] "GET /preview/login.admin HTTP/1.1" 302 20
172.16.254.157 - - [06/Feb/2017:05:23:29 -0600] "GET /preview/login.admin HTTP/1.1" 302 20
172.16.254.157 - - [06/Feb/2017:05:23:29 -0600] "GET /preview/login.admin HTTP/1.1" 302 20
172.16.254.157 - - [06/Feb/2017:05:23:29 -0600] "GET /preview/login.admin HTTP/1.1" 302 20
172.16.254.157 - - [06/Feb/2017:05:23:30 -0600] "GET /preview/login.admin HTTP/1.1" 302 20
172.16.254.157 - - [06/Feb/2017:05:23:30 -0600] "GET /preview/login.admin HTTP/1.1" 302 20
172.16.254.157 - - [06/Feb/2017:05:23:30 -0600] "GET /preview/login.admin HTTP/1.1" 302 20
172.16.254.157 - - [06/Feb/2017:05:23:31 -0600] "GET /preview/login.admin HTTP/1.1" 302 20
172.16.254.157 - - [06/Feb/2017:05:23:31 -0600] "GET /preview/login.admin HTTP/1.1" 302 20
172.16.254.157 - - [06/Feb/2017:05:23:31 -0600] "GET /preview/login.admin HTTP/1.1" 302 20
172.16.254.157 - - [06/Feb/2017:05:23:32 -0600] "GET /preview/login.admin HTTP/1.1" 302 20
172.16.254.157 - - [06/Feb/2017:05:23:32 -0600] "GET /preview/login.admin HTTP/1.1" 302 20
172.16.254.157 - - [06/Feb/2017:05:23:32 -0600] "GET /preview/login.admin HTTP/1.1" 302 20
172.16.254.157 - - [06/Feb/2017:05:23:33 -0600] "GET /preview/login.admin HTTP/1.1" 302 20
172.16.254.157 - - [06/Feb/2017:05:23:33 -0600] "GET /preview/login.admin HTTP/1.1" 302 20
172.16.254.157 - - [06/Feb/2017:05:23:33 -0600] "GET /preview/login.admin HTTP/1.1" 302 20
172.16.254.157 - - [06/Feb/2017:05:23:34 -0600] "GET /preview/login.admin HTTP/1.1" 302 20
172.16.254.157 - - [06/Feb/2017:05:23:34 -0600] "GET /preview/login.admin HTTP/1.1" 302 20
172.16.254.157 - - [06/Feb/2017:05:23:34 -0600] "GET /preview/login.admin HTTP/1.1" 302 20
172.16.254.157 - - [06/Feb/2017:05:23:35 -0600] "GET /preview/login.admin HTTP/1.1" 302 20
172.16.254.157 - - [06/Feb/2017:05:23:35 -0600] "GET /preview/login.admin HTTP/1.1" 302 20
122.176.45.206 - - [06/Feb/2017:05:24:33 -0600] "GET /preview/login.admin HTTP/1.1" 302 20

Apache服务器正在接收这些请求,但没有将任何内容转发到Tomcat。

Chrome的检查元素窗口的网络选项卡显示如下内容: enter image description here

但是,如果我清除JSESSIONID cookie,则可以正常工作。


这很奇怪,但这个问题是在一周前开始出现的(应用程序已经工作了4年!),这与新的更新发布同时发生。

我尝试了谷歌搜索并发现人们在2012年和2015年也遇到过类似的问题。

Chrome是否真的有问题? 互联网标准是否正在改变? 无论如何,我该如何解决这个问题?


编辑:

1. 这个问题只出现在Google Chrome中。


第二次编辑:

  1. 问题也开始在Mozilla Firefox中出现。
1个回答

2
如果您仔细观察您的流量,会发现它似乎在http和https之间交替切换。 有两种可能:(a)有一个重定向规则起作用,例如,某人认为自动将http重定向到https是个好主意,但没有使用HSTS。 (b)该站点设置了安全cookie但在之后重定向到非安全端点,因此未呈现cookie; 网站将您重定向回登录页面(因为您未经过身份验证),然后将其作为会话固定风险缓解的一部分删除cookie。或者(c)上述两个问题相互作用导致了这种行为。

那很有帮助。谢谢:D - Jay
所以,应该如何解决这个问题?我遇到了同样的问题,并得出了与这个“答案”相同的结论,但解决方案在哪里呢? - Alex Burdusel
你如何解决(b)?我有类似的问题,但这个应用程序不是由我开发的,而且找出是哪一部分导致了问题需要花费很长时间。 - Dave Doga Oz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接