在网站群的建设中,各子站需要共享主站的footer等公共信息。同时主站的后台管理也集成了各子站的管理,采取的方式是使用iframe嵌入各站的页面。在本机开发环境中,没有出现任何的问题。但是一放到测试环境中,便遇到session丢失的问题。
??????? 环境:应用服务器采用tomcat6.0,各个站点单独使用一个应用服务器,部署在一台物理服务器上。外部访问采用同一个IP,但是不同的端口。
??????
起初以为,IE它的安全策略默认是会把iframe中的页面站点认为是不可信任的,它会阻止该站点传过来的cookie(如果你在iframe中的URL
跳转是用的localhost,则不会被阻挡),所以因为没法使用cookie了,session便失效了。解决的方法是在过滤器,或者被嵌入的页面内加
入属性为P3P的header信息。java为:response.addHeader("P3P","CP=CAO PSA
OUR");但是依然没有成功。网上的解决方案都是这么说,况且自己以前还弄过,都成功过,这次怎么弄都不好。
???????
今天脑子安静下来,仔细的分析这里面的原因。如果是IE的安全限制,但是火狐、google浏览器没有这样的限制,为什么这两个浏览器也出现这样的情况。
这肯定不仅仅和跨域引起的P3P的安全问题有关。于是在本机测试,通过iframe引入测试环境中的链接,设置了P3P,发现一切正常。这就更说明了,测
试环境中的问题绝对不是P3P的问题了。而且使用了同一个IP,也应该没有跨域的说法。那原因到底是什么呢?
???????
慢慢的,我将视线注意到了端口上。这些网站的访问方式都是:同一IP+不同端口,难道和端口有关系。上网搜,关于这方面的内容太少了,但是总算在零星的资
源中,找到了里面的原因。IP相同的两个session对应的cookie是一样的,而不幸的是sessionID就保存在cookie中,这样先访问
A,再访问B的时候,B的sessionid会覆盖A的sessionid。这个事情没办法解决,所以你不要搞两个端口,最好是搞两个IP。原来都是
cookie惹的祸,它不会区分端口,造成这多个站点不断的后来的覆盖前面的,从而造成session的丢失。问题解决了,将相互有引用的应用架构在不同
的虚拟主机中,或者映射不同的IP。
详细解决方案
iframe应用session丢失的有关问题
热度:94 发布时间:2012-10-07 17:28:51.0
相关解决方案
- Servlet Session 购物车,该怎么解决
- Servlet Session 购物车解决办法
- iframe 子页刷新父页有关问题 大神请帮忙看看
- session 覆盖的有关问题 求高手
- Could not deserialize session data解决方法
- response.write(session.getAttribute("BranchName")提示异常
- JSP上if(trim(session.getAttribute("grade"))== "0") 多谢!
- session.invalidate()无效解决办法
- null id in com.bsw.gms.hibernate.pojo.Score entry (don't flush the Session after an exception occurs,该怎么解决
- spring2.0+hibernate3.2中,oracle中产生大量的inactive session,怎么解决
- jsp页面放在html《iframe》中中文没法正常显示 单独是可以显示正常的O(∩_∩)O~该怎么解决
- session 登录有关问题
- Struts2 的 Action 类里如何创建 session request response out 对象
- 请问一个页面有关问题-iframe
- iframe 鼠标打击有关问题
- AJAX 的TabContainer控件 嵌套 iframe 标签页 标签页面过长时自动顺应
- WEB session 有关问题
- iframe 中使用UEditor有关问题
- Iframe top.history.go(@Num)有关问题
- iframe Session丢失 跳转到登陆页面有关问题
- 一个纠结的有关问题-session
- iframe 局部刷新 带图片的刷新按钮 如何弄
- 使用 StateServer 保存 Session,哪位高手用过啊
- Session.Remove()为啥不起作用
- session 没法自动注销
- asp.net session 有效性有关问题
- session 和 cookie 的有关问题
- session 过期有关问题
- Session 值丢失,该如何处理
- Session["loginname"] 赋值两种方式有什么区别解决办法