就最近一段时间,就遇到了两次session id 一直变化的,所以做个总结。
来源:互联网 发布:电脑桌面日程表软件 编辑:程序博客网 时间:2024/05/17 07:16
1. 第一种出现是在一个项目里面这里叫A项目,需要嵌入另外一个项目这里叫B项目,通过iframe (IE会出现)
通过iframe引入 B项目 因为B项目里面有登录拦截,所以在A项目里面会请求登录一下,可是只要一请求B项目,就一直停留在请登录
调试后发现每次请求都会产生一个全新的sessionid,所以才会一直出现请重新登录的界面。问题是找到了(ps:只要可以登录,到时候通过iframe就可以引入自己需要的B项目页面了)要怎么解决呢?
百度了以后发现,IE会丢失iframe中的cookie,而session其实就是基于cookie的,客户端在第一次与服务器进行会话时,会分配给客户端sessionid保存在cookie中,然后在后面的请求中,会带上cookie, 现在IE会丢失iframe中的cookie,所以服务器会重新分配给客户端sessionid ,所以会提示一直需要登录
所以只要设置一下p3p就可以了。
P3P(Platform for Privacy Preferences)正是一种可以提供这种个人隐私保护策略,一般浏览器都支持P3P协议。P3P header允许跨域访问隐私数据,从而可以跨域set-cookie成功
我是在B项目的拦截器里面加了一个p3p协议设定的代码
HttpServletResponse res = (HttpServletResponse) ServletActionContext.getResponse();
res.setHeader("P3P","CP=CAO PSA OUR");
2.第二种是出现在外网访问的地方,第二种出现的情况是基于第一种,就是我们的A项目和B项目本来是在内网部署的,然后需要给领导看,叫网管把我们这两个项目的地址给映射到外网了。登录A项目的时候,一直提示,请重新登录。
一调试,还是一样的问题,sessionid一直在变化,那这个是什么原因呢?
后面百度得知:因为我们的A项目和B项目映射到外网以后是ip一致,然后端口不同而已,这样子会造成session冲突
IP相同认为是 同一个域,接收了B的set-cookie指令,把对应的cookie内容覆盖了,其中包括sessionid,造成A的session丢失。 如果 IP不同,则不会发生这个问题。IP相同的两个session对应的cookie是一样的,而不幸的是sessionID就保存在cookie中,这样先访问A,再访问B的时候,B的sessionid会覆盖A的sessionid。这个事情没办法解决,所以不能弄两个端口,要弄两个外网ip。都是cookie出现的问题,它不会区分端口,造成这多个站点不断的覆盖前面的,从而造成session的丢失
所以在此做了一个总结
- 就最近一段时间,就遇到了两次session id 一直变化的,所以做个总结。
- 最近一直忙于研究Portal,所以对于JSR170的研究需要后放一段时间
- 楼主最近遇到一个需求就在在ext 框架里实现右下角弹框提示,就自己动手做了一个
- 做开发很久了 Remoting 一直没有碰过,正好最近的项目上面用,就拿出来给大家看看
- 还有几十分钟今年工作就结束了,对今年做个简单的总结吧。
- 最近一段时间就像在梦游。
- 最近一段时间的总结
- 最近一段时间的总结
- 最近一段时间的总结
- 最近一段时间的总结
- 最近一段时间遇到的费了时间的问题
- 学习的知识一段时间不用就忘记了怎么办
- 最近又遇到一个RST, 一眼就看出来了!
- 最近一段时间遇到的问题
- 最近项目上遇到了个问题,一直未能解决
- 最近一段时间感到累,所以也懒得写BLOG了
- 最近一直在看理论方面的东西,过段时间就可以开始回到实践中了
- 总结最近一段时间的生活
- HDU 1518 Square(DFS+剪枝)
- nodejs资源
- HDU1272 小希的迷宫(并查集,无环图)
- 手机网页图片自适应大小 background-size css 图片全屏 背景尺寸设置
- Tomcat虚拟目录配置
- 就最近一段时间,就遇到了两次session id 一直变化的,所以做个总结。
- mybaits 基础
- BP神经网络算法学习---处理流程(伪代码)
- Unity5.x实现简易语音聊天(三)Client-Server通信
- android 复习之路之Activity
- 勤奋是一种被逼无奈,热爱是一种情不自禁
- TEC1701.WebADI开发技术总结 - 第五章 通过API自动创建Web ADI(5/6)
- 【Codeforces 652 C Foe Pairs 】
- jssdk实现自定义分享到微信好友和微信朋友圈