cookie覆盖导致系统一直需要重复登录

最近在发布web系统时,出现点了某个菜单后就要重新登录的问题,由于当时系统发布新版本,一时没有发现是什么问题导致该问题拖延了一段时间。根据现象个人感觉就是服务器session过期了,可是经过多次测试发现并非如此,一时不知道是什么问题,既然要重新登录肯定是服务器session不正确导致。

         启动火狐浏览器,分析后发现点击异常的菜单所带的sessionId与登录时获取的sessionId不一致导致了这次服务器给这次异常的请求重新分配了sessionID,当然浏览器获取到这个新的sessionId后会将以前正常的cookie里面的sessionId覆盖掉,导致以后点击其它菜单请求数据时都会使用新的sessionID,这时服务器中在根据新的sessionId获取用户数据时就发现没有找到对应数据,认为这次请求是异常的,并没有正常登陆系统而非法的请求,所以就需要退出到登陆页面重新登陆。

问题分析:

以下为第一次输入密码登陆时系统获取的sessionId,

下图为请求异常按钮后获取的sessionid,使用火狐浏览器分析得知第二次请求从服务器活动sessionId与刚登陆时获取的sessionid完全不一样,在浏览器中查看

cookie中相关数据发现,以前生成的cookie文件已经被新的cookie文件覆盖了。

查看浏览器cookie文件内容如下:

cookie文件中以域和路径来确认用户的一次请求对应的sessionId.

问题解决:

仔细查看异常按钮http请求的路径如下:

http://192.168.2.88:8080//cpicbc/pages/Attach/getImageInfo.do?url=D:\person\file\330681198110097595\9102\201602241159153081.jpg

发现与其他正常的路径相比就是192.168.2.88:8080/后面多了一个‘ /  ‘,然后将其去掉以后如下

http://192.168.2.88:8080/cpicbc/pages/Attach/getImageInfo.do?url=D:\person\file\330681198110097595\9102\201602241159153081.jpg

在上服务器调试,发现正常了。

总结: 

        tomcat服务器在处理http请求时,将http://192.168.2.88:8080//cpicbc/pages/Attach/getImageInfo.do?url=D:\person\file\330681198110097595\9102\201602241159153081.jpg  针对这个异常的请求路径重修分配sessionId 并反馈给了浏览器,使浏览器将以前的cookie内容重修覆盖了,所以当用户再请求时,request携带的报文头中的sessionId 是新的,而服务器中并没有使用该sessionId来保存用户信息,所以就导致了这种异常的发送。

猜你喜欢

转载自blog.csdn.net/p312011150/article/details/81075671