ie8 session丢失 jsessionId的path被自动修改

fevergreenliu 2013-01-10 04:00:33
系统做了单点登录,有一个应用服务器作为客户端,客户端上部署了CAS客户端filter做身份验证
和单点登录。一个CAS Server做单点登录认证的服务器。当使用Ie8打开网页访问应用服务器时,会被CAS filter拦截,自动跳转到CAS Server登录。登录成功后,分配给一个ticket并使浏览器继续跳转会原来的地址,并且url地址上把ticket参数给加上了。然后应用服务器上的CAS filter拿到ticket后调用了CAS server验证成功,然后把验证成功后的身份信息放到了session里,再要求浏览器跳转到最初的URL,这时,ticket参数被清除了。

CAS filter 要求浏览器跳转,于是发送了302指令给浏览器,同时在http header里设置了Set-Cookie指令,来设置cookie,cookie的path为"/bpnweb"。浏览收到以后,然后开始跳转,同时发送该cookie,然后cookie的path变成了"/bpnweb/",这是导致问题的原因。然后浏览器窗口没有关闭,但是应用服务器上的session超时了。于是在当前浏览器窗口上再访问时,重新认证了一次,发送了一个新的session的cookie给浏览器,该cookie的path为"/bpnweb"和"/bpnweb/"不同,于是浏览器窗口里的session信息更新不了,发送给应用服务器的session永远是已经过时了的session。

问题有点复杂,说的啰嗦了一些,还请各路高人指点一下,感激不尽。
...全文
309 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

25,980

社区成员

发帖
与我相关
我的任务
社区描述
高性能WEB开发
社区管理员
  • 高性能WEB开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧