`

iframe跨域session丢失

    博客分类:
  • Java
阅读更多

问题根源: 

IE6/IE7支持的P3P(Platform for Privacy Preferences Project (P3P) specification)协议默认阻止第三方无隐私安全声明的cookieFirefox目前还不支持P3P安全特性,firefox中自然也不存在此问题了。

 解决办法:

在要嵌入的内容中(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\""")

或者:Response.AddHeader("P3P","CP=CAO PSA OUR");

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'" />

 

针对ASP.Net的其它解决办法:

在开发中,我们经常会遇到使用Frame来工作,而且有时是为了跟其他网站集成,应用到多域的情况下,而Iframe是不能保存Session的。因此,网上可以找到很多相关的文章,如果网站可以采用设置Web.Config中的配置:<sessionstate></sessionstate> mode="StateServer"
stateConnectionString="tcpip=127.0.0.1:42424"
sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes"
cookieless="false" 
timeout="40" 
/>
   
cookieless="false"改成"true"就可以了。但也同样有个小问题,就是如果页面中采用Javascriptwindow.location.href=''这样的方式来重定向的话,系统会认为这是另一个新的请求,产生一个新的SessionId,导致原Session同样的丢失。所以对于重定向,还是使用Response.Redirect()为好。

   
除了Ifrmae有丢Session问题外,frameset也有同样的问题。Frameset的问题更不确定,是有时会丢,有时不会丢,这更认人头痛,在网上找到了一个方法,在页面page_onload里添加一语句:Response.AddHeader("P3P","CP=CAO PSA OUR");
FrameSet
中的Session丢失问题就解决了。

最简单的方法就是在iis里设置,图片见附件。

 

来源:http://blog.163.com/da7_1@126/blog/static/1040726782011102771537946/

 

  • 大小: 65.1 KB
分享到:
评论

相关推荐

    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丢失问题解决方法

    总的来说,针对IE浏览器中iframe跨域导致Session丢失的问题,关键在于理解浏览器对跨域Cookie的处理方式,特别是IE的独特限制。通过设置P3P头,可以通知浏览器允许iframe内的页面使用和共享Session,从而修复登录和...

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

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

    iframe跨域嵌套自适应高度

    ### iframe跨域嵌套自适应高度 在网页开发过程中,`iframe`作为一种常见的网页元素,被广泛用于在当前页面中嵌入另一个独立的文档或页面。然而,在实际应用中经常会遇到一些问题,如跨域限制、自适应高度调整以及...

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

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

    服务器session丢失

    【服务器Session丢失】是一个常见的问题,尤其是在Web应用开发中,涉及到用户状态管理时。Session是ASP.NET中用于存储用户特定信息的一种机制,当用户在网站的不同页面之间导航时,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策略,即使服务器返回了数据,浏览器也会因为安全原因拒绝解析...

    页面间传值

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

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

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

    前端、vue、react、js面试题

    sessionStorage和localStorage也是客户端存储,但数据不会随浏览器关闭而丢失,它们分别用于临时和长期数据存储,且容量更大。 14. **Web Worker**: - Web Worker允许在后台线程中执行耗时任务,不影响主线程,...

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

    - 在某些情况下,fetch会先发送预检请求(OPTIONS),以确认跨域请求是否被允许。 13. **Cookie、sessionStorage、localStorage的区别**: - Cookie存储在客户端,大小有限,且每次请求都会发送到服务器;...

Global site tag (gtag.js) - Google Analytics