在网站群的建设中,各子站需要共享主站的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
分享到:
相关推荐
在探讨“IFrame中Session丢失的解决...通过上述策略的应用,可以有效解决IFrame环境下Session丢失的问题,提高Web应用的稳定性和安全性。然而,开发者还需持续关注浏览器更新和隐私政策变化,以适应不断发展的Web环境。
`iframe` 跨域访问`session`正是为了解决这一问题。 首先,让我们了解一下`session`和`cookie`的关系。`session`通常用于存储用户登录状态等临时信息,而`cookie`则作为`session` ID的载体在客户端和服务器之间传递...
NULL 博文链接:https://thoreau.iteye.com/blog/745100
通过这种方式,可以解决在IE浏览器中由于P3P隐私设置导致的iframe跨域cookie丢失问题,进而解决session失效导致的用户频繁重新登录的问题。这个方法在技术上是可行的,但需要网站管理员操作,确保P3P声明符合实际的...
标题中的问题涉及到的是PHP在Internet Explorer (IE) 浏览器下,特别是在使用iframe时,出现的Session丢失问题。在描述中提到,当一个登录页面被其他网站通过iframe框架加载时,用户在IE浏览器中无法正常登录,因为...
在 ASP.NET 开发中,跨域和 Session 失效问题是一个常见的问题,特别是在使用 iframe 嵌入远程应用时。今天,我们来讨论这个问题的解决办法。 什么是跨域和 Session 失效? -------------------------------- 跨域...
在互联网应用中,由于同源策略的限制,不同域名、协议或端口的网页之间无法直接进行通信。然而,有时我们需要在不同的域之间共享数据或者嵌入其他网站的内容,这时候`iframe`(Inline Frame)就成为了一种常用的解决...
本文主要探讨如何解决Iframe跨域访问Cookie和Session的问题。 首先,理解跨域访问的基本概念。在Web浏览器的安全策略中,同源策略(Same-origin policy)禁止了一个源(协议+域名+端口)的文档或脚本直接获取另一个...
当`iframe`尝试加载的页面与包含它的页面不在同一域名下时,就会遇到跨域问题。在处理`iframe`跨域时,主要涉及以下两种方法: 1. **CORS(Cross-Origin Resource Sharing)**:这是一种现代浏览器支持的跨域资源...
在网页设计中,下拉菜单经常用于实现导航或者选项选择,但当这些菜单位于一个`iframe`元素内部时,可能会遇到被`iframe`遮挡的问题。这个问题主要涉及到浏览器的层叠上下文(CSS Z-Index)和`iframe`的渲染机制。...
【服务器Session丢失】是一个常见的问题,尤其是在Web应用开发中,涉及到用户状态管理时。Session是ASP.NET中用于存储用户特定信息的一种机制,当用户在网站的不同页面之间导航时,Session可以帮助保持用户的状态。...
在Web开发中,JavaScript(JS)的同源策略限制了不同源之间进行交互,包括从一个页面中的脚本访问另一个不同源的IFrame内容。"解决JS跨域访问IFrame的解决方案"这一主题关注的就是如何克服这个限制,使得在JSP页面中...
在Web开发中,跨域(Cross-Origin)是一个常见的挑战,特别是在构建复杂应用或者需要整合不同来源数据时。浏览器的同源策略(Same-Origin Policy)是为保障用户安全而设定的一种机制,它规定了只有相同协议、主机名...
确保`<iframe>`加载的页面与包含它的页面位于相同的源(协议+域名+端口)下,或者`<iframe>`加载的页面明确通过`window.postMessage`等方式允许父页面访问其内容。 总的来说,通过使用JavaScript动态计算`<iframe>`...
这篇博客将深入探讨如何解决`iframe`的跨域问题。 首先,理解同源策略是至关重要的。同源策略是浏览器为保障用户数据安全而设置的一种机制,它限制了来自不同源的文档或脚本之间的交互。对于`iframe`,如果源(协议...
本文将详细讲解如何利用IFrame解决这些问题,特别是针对Flex菜单的遮挡问题。 首先,理解Flex和IFrame的基本概念是必要的。Flex是一种基于ActionScript和MXML的开源框架,用于构建富互联网应用程序(RIA)。而...
3. **使用`document.domain`设置相同域名**:如果父页面和iframe都属于同一顶级域名的不同子域,可以通过设置`document.domain`属性来消除同源限制。例如,`parent.example.com`和`child.example.com`可以都设置`...
由于浏览器同源策略的限制,不同域的iframe之间直接访问DOM或执行函数会受到限制,但同一页面上的同源iframe之间可以互相通信。 首先,要明确iframe之间的互相调用涉及到的作用域和DOM层次结构。iframe中的页面相...