`
guohf
  • 浏览: 406690 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

iframe 跨域

 
阅读更多

业务需求要将a系统嵌入到淘宝平台,也就是通过iframe方式嵌入a系统页面,由于是不同平台系统,不同的域名,所以在测试中就发现在嵌入的a系统中会存在session失效问题,开始以为是前端页面问题,但是在FF下测试不存在,IE下才出现,后来google才知道是跨域问题导致: 

产生问题场景: 
在一个应用A的某个page中, 通过IFrame的方式嵌入另一个应用B某个页面. 当两个应用的domain 不一样时, 在被嵌入的页面中Session失效。(session基于cookie实现,引用页不允许使用cookie). 

引用网上解释: 
IE6/IE7从安全性角度考虑,支持的P3P(Platform for Privacy Preferences Project (P3P) specification)协议默认阻止第三方无隐私安全声明的cookie,Firefox目前还不支持P3P安全特性,firefox中自然也不存在此问题了。 

解决方案: 
1. 修改Client的设置 
使Client可以接受来自任何网站的Cookie(具体设置在IE选项的隐私页中, 将B站点加入到受信任的站点),或者将两个domain都设置为受信任站点(需要用户设置方案不可取)。 

2. 应用的domain修改 
简单方案: 两个应用使用同一个domain 
复杂方案: 可以在iframe加载的页面里通过setdomain来强制更改 

3. P3P 
1. 在要嵌入的内容中(iframe指向的站点)输出P3P的主机头声明, 步骤如下: 
自定义HTTP头名: P3P,HTTP头值: CP="CAO PSA OUR" 

2. 在被嵌入页面响应头里添加一语句:Response.AddHeader("P3P","CP=CAO PSA OUR");
 

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

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics