`

iframe跨域session丢失问题

 
阅读更多
最近在做一个系统(A),需要在系统(A)中集成目前现存系统(B)的功能。
  当然,系统(B)功能在访问时做了登陆限制。(一般性都是:系统登陆后把userId放入session中,在具体的功能页面加入session中userId的判断,
  如果session中userId不存在,则跳到登陆页,否则继续加载并正常显示功能。)
  那么,在系统(A)中要访问系统(B)的功能无非是要绕过系统(B)的登陆。(一般的做法是先跳转到系统(B)中的一个页面,在这个页面里将userId塞入session中,
  再自动跳转到实际要访问的功能页面)
  以上做法,在不使用框架结构时,是可行的,确切的说是很简单的。
  但是如果,系统(A)使用了框架结构,即系统(B)中的功能页面要嵌入到系统(A)的框架中,则会出现一些意想不到的问题,
  确切说是系统(B)跳转到了登陆页面,session丢失了。
  为什么会这样呢?
  因为应用需求在一个页面的不同frame下面访问不同的域,结果造成了session丢失。
  问题根源:
  IE6/IE7支持的P3P(Platform for Privacy Preferences Project (P3P) specification)协议默认阻止第三方无隐私安全声明的cookie,Firefox目前还不支持P3P安全特性,firefox中自然也不存在此问题了。Mircosoft对此的具体描述可以参见 Privacy in Internet Explorer 6
 
  解决办法是在要嵌入的内容中(iframe指向的站点)输出P3P的主机头声明:
  php:
header('P3P:CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"');

asp.net:
HttpContext.Current.Response.AddHeader("p3p", "CP=\""IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT\""")

jsp:
response.setHeader("P3P","CP='IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT'")

ColdFusion:
<cfheader name="P3P" value="CP='IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT'" />

转自:http://hypgr.iteye.com/blog/587562
分享到:
评论

相关推荐

    iframe跨域访问时session丢失

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

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

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

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

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

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

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

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

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

    iframe跨域嵌套自适应高度

    本文将详细介绍如何实现`iframe`跨域嵌套下的自适应高度调整,并讨论如何解决因跨域嵌套而可能引起的`session`丢失问题。 #### 一、`iframe`自适应高度原理与实现 1. **基本概念**: - **`iframe`**:`iframe`即...

    解决前后端分离 vue+springboot 跨域 session+cookie失效问题

    环境: 前端 vue ip地址:192.168.1.205 ...搜索问题,发现跨域,服务器响应的setCookie浏览器无法保存,而且就算保存了域名不同也不能携带。 第一步: 后台添加过滤器,因为前后端分离,不可能每个方

    服务器session丢失

    【服务器Session丢失】...总之,处理服务器Session丢失问题需要综合考虑多种因素,包括应用程序配置、服务器环境和代码实现。通过仔细排查和优化,可以有效减少Session丢失的情况,从而提供更稳定、更顺畅的用户体验。

    php session_start()出错原因分析及解决方法

    - **PHP在IE下的iframe跨域session丢失问题**:由于浏览器同源策略,跨域会导致会话丢失,可以通过设置 P3P 头部或使用共享域名的 cookie 来解决。 - **Failed to write session data** 错误:这通常是因为临时...

    iframe嵌入链接本地环境正常,正式环境重定向到登录解决

    - **Session丢失**:正式环境中,由于跨域请求或其他原因,服务器无法正确识别用户的Session信息,从而自动跳转至登录页面。 #### 解决方案 为了解决这个问题,可以通过以下步骤进行: 1. **协议一致性处理**:确保...

    ajax跨域访问遇到的问题及解决方案

    2. **Session丢失**:跨域请求无法携带Cookie,导致服务器端的Session无法正常工作。 3. **CORS(跨源资源共享)未开启**:如果目标服务器没有配置CORS策略,即使服务器返回了数据,浏览器也会因为安全原因拒绝解析...

    jsessionid存在的问题及其解决方案

    在Web开发中,`jsessionid`是一个常见的概念,它关联到Java服务器会话(Session)的管理。本文将深入探讨`jsessionid`存在的问题以及相应的解决方案,并结合提供的`DisableUrlSessionFilter.java`和`web.xml`文件来...

    页面间传值

    Local Storage持久化存储数据,关闭浏览器也不会丢失,而Session Storage仅在当前会话有效。它们提供键值对存储,容量比Cookie大,但同样不能用于跨域,且数据安全性较低。 5. HTML5 History API: History API...

    2022年前端工程师最新面试题

    - iframe用于在页面中嵌入另一个页面,但可能导致性能问题,不利于SEO,且存在安全风险。 17. **DOCTYPE**: - 声明文档类型,影响浏览器的解析模式,严格模式遵循HTML标准,混杂模式则兼容旧版浏览器。 18. **...

    前端、vue、react、js面试题

    - IFrame用于在页面内嵌入其他页面,但可能导致性能问题和安全风险,如XSS攻击。 17. **DOCTYPE**: - DOCTYPE声明指定文档类型和遵循的HTML或XHTML规范,影响文档的解析模式,严格模式遵循标准,混杂模式兼容旧...

Global site tag (gtag.js) - Google Analytics