`
yongtree
  • 浏览: 233633 次
  • 性别: Icon_minigender_1
  • 来自: 青岛
社区版块
存档分类
最新评论

解决同一IP不同端口访问的站点iframe应用session丢失的问题

阅读更多

在网站群的建设中,各子站需要共享主站的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。

 

原文:http://www.po-soft.com/blog/yongtree/1165.html

分享到:
评论
3 楼 yongtree 2010-05-21  
  
2 楼 yongtree 2010-05-21  
dddddd
1 楼 yongtree 2010-05-21  
aa
ff

相关推荐

    IFrame中Session丢失的解决办法

    在探讨“IFrame中Session丢失的解决...通过上述策略的应用,可以有效解决IFrame环境下Session丢失的问题,提高Web应用的稳定性和安全性。然而,开发者还需持续关注浏览器更新和隐私政策变化,以适应不断发展的Web环境。

    iframe 跨域访问session

    `iframe` 跨域访问`session`正是为了解决这一问题。 首先,让我们了解一下`session`和`cookie`的关系。`session`通常用于存储用户登录状态等临时信息,而`cookie`则作为`session` ID的载体在客户端和服务器之间传递...

    iframe跨域访问时session丢失

    NULL 博文链接:https://thoreau.iteye.com/blog/745100

    iframe跨域与session失效问题的解决办法

    通过这种方式,可以解决在IE浏览器中由于P3P隐私设置导致的iframe跨域cookie丢失问题,进而解决session失效导致的用户频繁重新登录的问题。这个方法在技术上是可行的,但需要网站管理员操作,确保P3P声明符合实际的...

    PHP关于IE下的iframe跨域导致session丢失问题解决方法

    标题中的问题涉及到的是PHP在Internet Explorer (IE) 浏览器下,特别是在使用iframe时,出现的Session丢失问题。在描述中提到,当一个登录页面被其他网站通过iframe框架加载时,用户在IE浏览器中无法正常登录,因为...

    【ASP.NET编程知识】iframe跨域与session失效问题的解决办法.docx

    在 ASP.NET 开发中,跨域和 Session 失效问题是一个常见的问题,特别是在使用 iframe 嵌入远程应用时。今天,我们来讨论这个问题的解决办法。 什么是跨域和 Session 失效? -------------------------------- 跨域...

    完美解决iframe跨域问题

    在互联网应用中,由于同源策略的限制,不同域名、协议或端口的网页之间无法直接进行通信。然而,有时我们需要在不同的域之间共享数据或者嵌入其他网站的内容,这时候`iframe`(Inline Frame)就成为了一种常用的解决...

    关于Iframe如何跨域访问Cookie和Session的解决方法

    本文主要探讨如何解决Iframe跨域访问Cookie和Session的问题。 首先,理解跨域访问的基本概念。在Web浏览器的安全策略中,同源策略(Same-origin policy)禁止了一个源(协议+域名+端口)的文档或脚本直接获取另一个...

    iframe跨域常用问题和iframe页面自适应

    当`iframe`尝试加载的页面与包含它的页面不在同一域名下时,就会遇到跨域问题。在处理`iframe`跨域时,主要涉及以下两种方法: 1. **CORS(Cross-Origin Resource Sharing)**:这是一种现代浏览器支持的跨域资源...

    解决下拉菜单被iframe遮住问题

    在网页设计中,下拉菜单经常用于实现导航或者选项选择,但当这些菜单位于一个`iframe`元素内部时,可能会遇到被`iframe`遮挡的问题。这个问题主要涉及到浏览器的层叠上下文(CSS Z-Index)和`iframe`的渲染机制。...

    服务器session丢失

    【服务器Session丢失】是一个常见的问题,尤其是在Web应用开发中,涉及到用户状态管理时。Session是ASP.NET中用于存储用户特定信息的一种机制,当用户在网站的不同页面之间导航时,Session可以帮助保持用户的状态。...

    解决JS跨域访问IFrame的解决方案

    在Web开发中,JavaScript(JS)的同源策略限制了不同源之间进行交互,包括从一个页面中的脚本访问另一个不同源的IFrame内容。"解决JS跨域访问IFrame的解决方案"这一主题关注的就是如何克服这个限制,使得在JSP页面中...

    iframe跨域解决方案

    在Web开发中,跨域(Cross-Origin)是一个常见的挑战,特别是在构建复杂应用或者需要整合不同来源数据时。浏览器的同源策略(Same-Origin Policy)是为保障用户安全而设定的一种机制,它规定了只有相同协议、主机名...

    iframe内容高度 iframe自适应高度终极解决Iframe设置高度后无法缩小问题

    确保`<iframe>`加载的页面与包含它的页面位于相同的源(协议+域名+端口)下,或者`<iframe>`加载的页面明确通过`window.postMessage`等方式允许父页面访问其内容。 总的来说,通过使用JavaScript动态计算`<iframe>`...

    iframe 跨域解决方法

    这篇博客将深入探讨如何解决`iframe`的跨域问题。 首先,理解同源策略是至关重要的。同源策略是浏览器为保障用户数据安全而设置的一种机制,它限制了来自不同源的文档或脚本之间的交互。对于`iframe`,如果源(协议...

    Flex中利用IFrame解决嵌入HTML时Flex组件被遮挡和IFrame被隐藏的问题

    本文将详细讲解如何利用IFrame解决这些问题,特别是针对Flex菜单的遮挡问题。 首先,理解Flex和IFrame的基本概念是必要的。Flex是一种基于ActionScript和MXML的开源框架,用于构建富互联网应用程序(RIA)。而...

    safari,opera嵌入iframe页面cookie读取问题解决方法

    3. **使用`document.domain`设置相同域名**:如果父页面和iframe都属于同一顶级域名的不同子域,可以通过设置`document.domain`属性来消除同源限制。例如,`parent.example.com`和`child.example.com`可以都设置`...

    解决同一页面中两个iframe互相调用jquery,js函数的方法

    由于浏览器同源策略的限制,不同域的iframe之间直接访问DOM或执行函数会受到限制,但同一页面上的同源iframe之间可以互相通信。 首先,要明确iframe之间的互相调用涉及到的作用域和DOM层次结构。iframe中的页面相...

Global site tag (gtag.js) - Google Analytics