`
c_c
  • 浏览: 86033 次
  • 性别: Icon_minigender_1
  • 来自: 太原
社区版块
存档分类
最新评论

iframe跨域与session失效问题

阅读更多

何为跨域session/cookie?

 

也就是第三方session/cookie。第一方session/cookie指的是访客当前访问的网站给访客的浏览器设置的seesion /cookie, 会被存储在访客的计算机上。第三方session/cookie指的是当前访问的网站中会加载(嵌入)另外第三方的网站代码,例如促销广告,那么第三方网 站也会在访客的计算机上添加session/cookie,这种就是第三方session/cookie。

 

我的问题

在开发讯息在线产品(http://iap.pgia.net)测试各种浏览器的兼容性时,发现IE浏览器(v7\8)都无法登录(总是提示验证码不匹配错误),而其它浏览器无此问题(firefox、百度等)。因此可以断定这和浏览器脱不了干系。

 

初步分析:

细查发现,在使用IE浏览器(v7\8)访问时,服务器端日志中显示sessionId一直在变化,每次请求都会产生一个全新的sessionId.

显然这是导致无法登录的直接唯一原因,如果解决这个问题则可正常登录。

 

深入分析:

为什么在IE浏览器(v7\8)上会出现这种情况呢,百度了解后得知:

出于隐私安全的考虑,IE会丢失Iframe中的CookieIE6/IE7支持的P3P(Platform for Privacy Preferences Project (P3P) specification)协议默认阻止第三方无隐私安全声明的cookieFirefoxChrome 不存在此问题。

我们知道Session 其实就是基于Cookie的。客户端在第一次与服务器建立会话时,会分配给客户端一个随机的sessionId,并存于客户端cookie中,然后在之后的请求中,会带上这个Cookie,如果在客户端找不到这样的Cookie,那么服务器就会重新分配一个。

而我的应用结构恰恰如此,即内置一个iframe嵌入远程应用来实现的。

 

解决办法:

要解决这个问题就是要在请求时添加“P3P”协议。那么如何实现呢?

在iframe框架嵌入的页面(就是你的iframe.src指向的远程页面,当然你要有控制它的权限)中加入如下代码:

<% 
// 解决IE7\8跨域访问问题
response.setHeader("P3P","CP=\"IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT\"");
%>

 至此,问题已解决,稍后再看请求的响应头部,会发现这样一项头部信息——P3P

 

  • 大小: 46.6 KB
2
0
分享到:
评论
1 楼 liubey 2014-01-23  
这个貌似不错

相关推荐

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

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

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

    在探讨如何解决iframe跨域与session失效的问题之前,我们需要了解几个重要的概念:什么是跨域,什么是session以及cookie。 首先,跨域问题通常出现在Web应用中,尤其是在使用iframe嵌入第三方网站内容时。在Web技术...

    iframe 跨域访问session

    然而,当涉及到跨域时,`iframe` 遇到的问题之一就是无法正常访问父页面或被嵌入页面的`session`。这是因为浏览器的同源策略(Same-Origin Policy)限制了不同源之间的交互,包括`session`和`cookie`。 同源策略是...

    iframe跨域访问时session丢失

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

    完美解决iframe跨域问题

    3. **iframe跨域问题**:当iframe加载的页面与包含它的页面不在同一个域时,就会出现跨域问题,导致无法直接通过JavaScript进行通信,如获取iframe内的内容、设置iframe的属性等。 **二、iframe跨域的解决方案** 1...

    iframe 跨域解决方法

    然而,由于浏览器的同源策略限制,当`iframe`加载的页面与包含它的页面不在同一个域名下时,就会遇到跨域问题。这篇博客将深入探讨如何解决`iframe`的跨域问题。 首先,理解同源策略是至关重要的。同源策略是浏览器...

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

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

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

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

    解决springboot实现跨域session共享问题

    然而,随着Web服务的复杂性和交互性增加,跨域资源共享(CORS)和会话(Session)共享成为开发者需要面对的重要问题。本文将详细讲解如何在Spring Boot应用中解决跨域session共享的问题,并探讨防止SQL注入的相关...

    关于iframe跨域POST提交的方法示例

    以前在面试的时候经常遇到问关于跨域的事儿,所以自己对跨域有一定的概念性了解,知道什么是跨域以及解决跨域的方法,但是具体实际从来没有操作过,直到最近在公司项目中,遇到了一个需要使iframe跨域进行POST提交的...

    iframe跨域问题

    iframe跨域问题:Uncaught DOMException Blocked a frame with origin解决方法

    跨域共享session (实现http跳转https 共享session)

    3. **代理服务器**:设置一个代理服务器,所有跨域请求都通过代理服务器转发,服务器端保持session不变,前端只需与代理服务器通信即可。 4. **WebSocket**:WebSocket协议本身支持跨域,可以用来传输session信息,...

    iframe跨域访问示例

    为了解决iframe跨域访问的问题,Web开发中引入了几种解决方案: 1. **CORS(Cross-Origin Resource Sharing)**:这是一种服务器端的方法,允许特定的资源被其他域的页面访问。通过设置HTTP响应头`Access-Control-...

    express如何解决ajax跨域访问session失效问题详解

    总结起来,解决Express中ajax跨域访问session失效问题的方法包括:客户端设置`xhrFields:{withCredentials:true}`;服务器端设置`Access-Control-Allow-Credentials: true`和指定的`Access-Control-Allow-Origin`;...

    iframe 跨域 自动适应高度

    当一个`iframe`加载的页面与包含它的页面不在同一个源下时,就会遇到跨域问题。为了解决这个问题,我们可以使用以下几种方法: - **CORS(Cross-Origin Resource Sharing)** 设置响应头`Access-Control-Allow-...

    iframe跨域通信解决方法

    ### iframe跨域通信解决方法 在现代Web开发中,跨域...通过上述步骤,可以有效地解决`iframe`跨域通信的问题。这种方法不仅适用于Vue项目,也可以应用于普通的Web页面中,为开发者提供了灵活且强大的跨域通信方案。

    iframe跨域解决方案

    本篇将深入探讨如何解决`iframe`跨域问题。 首先,我们需要了解`iframe`的基本概念。`iframe`全称 Inline Frame,即内联框架,是一种在HTML文档中嵌入另一个HTML文档的方式,常用于加载外部内容,如广告、地图、...

Global site tag (gtag.js) - Google Analytics