我有一个应用程序,它在 Apache Web 服务器上接收 HTTP/HTTPs 请求并将其传递给 tomcat。
最近,我在 Google Chrome 上遇到了 session 和重定向循环问题 和 Firefox 某些用户在 session 到期后注销浏览器。我设法追查了问题,发现浏览器没有清除 JSESSIONID cookie。手动清除后,它再次开始工作。
我检查了 Apache Web Server 的日志文件,发现了这个:
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 Server 正在接收这些请求,但没有将任何内容转发到 Tomcat。
Chrome 的检查元素窗口的网络选项卡向我展示了这一点:
但这在我清除 JSESSIONID cookie 后有效。
这很奇怪,但是这个问题大约是在一周前开始的(该应用程序从过去 4 年就开始工作了!),并且与新的 update rollout 相吻合。 .
我尝试过谷歌搜索,发现人们在 2012 年和 15 年也有类似的问题。
Chrome真的有问题吗? 互联网标准在改变吗? 尽管如此,我该如何解决这个问题?
编辑:
1. 问题仅与谷歌浏览器有关。
编辑#2:
最佳答案
如果您仔细查看您的流量,它似乎在 http 和 https 之间交替。
两种猜测:
(a) 存在对您不利的重定向规则,例如有人认为将 http 自动重定向到 https 是个好主意,但不使用 HSTS。
(b) 该站点正在设置安全 cookie,但随后重定向到非安全端点,因此不会显示 cookie;该网站将您重定向回登录页面(因为您看起来没有经过身份验证),然后作为 session 固定缓解措施的一部分丢弃 cookie。
或者 (c) 上述两个问题相互作用导致行为。
关于google-chrome - Chrome 和 Firefox 未清除 JSESSIONID cookie 会导致重定向循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42067192/