首页 > 编程知识 正文

我频繁记录 因为生活值得什么意思,jsessionid影响单点登出

时间:2023-05-04 08:54:40 阅读:45808 作者:4171

这两天,我遇到了由JSESSIONID频繁变化引起的问题。 虽然花了两天时间,但最后问题已经解决,但对于原因,以及在跟踪那个问题时遇到的几个疑问,我还不能接受。 首先记录下来,让遇到同样问题的人尽快解决这个问题。

让我先说一下项目的背景

这是一个维护较早的项目,是一个SSM框架,使用shrio进行权限管理。 shiro的会话id设置为sid,servlet的会话id为JSESSIONID。 最近,根据公司的要求集成了新的单点登录,该单点登录将信息填充到会话中。

整合完成后发送到网上时会出现问题。 页面经常报告域之间的错误。 我仔细排除后,发现了问题的直接原因。 也就是说,保存在浏览器端的JSESSIONID经常更改。 JSESSIOINID更改后,如果进入单点登录过滤器并清空session信息,则返回302重定向,发送到页面的ajax请求将返回302,并请求其他域名

然后在解决这个问题的过程中遇到了以下问题

1、如果不在浏览器中打开开发者模式,就没问题。 按F12打开开发人员模式时会出现此问题。 chrome、edge和IE11有这个问题,而firefox没有这个问题。 我还没想好为什么会这样。 因为如果以前没有在IE中打开开发人员模式,则会缓存一些get请求,但在开发过程中通常是打开的

2、本地调试时没有问题,只有向服务器公开时才有问题。 服务器上和本地的区别在于,以前挂有nginx,绕过nginx直接访问服务器时未发现问题

3、在排查过程中,我仔细查看了所有请求的请求头和响应头的信息,发现响应头中有set-Cookie,设置了新的JSESSIONID值,后面请求头中的JSESSIONID值会突然发生变化

直接说明解决方法。 在nginx上设置proxy_cookie_path解决了问题

中途参考了以下文章

3359 www.cn blogs.com/zang dalei/p/6021352.html

3359 www.cn blogs.com/hei oray/p/10329532.html

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。