iframe 跨域
  YbxoGKVP9a2Q 2023年11月02日 27 0


业务需求要将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'");
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
YbxoGKVP9a2Q
最新推荐 更多

2024-05-17