iframe跨域导致session丢失

问题描述:
   在一个应用(domain: A)的某个page中, 通过IFrame的方式嵌入另一个应用(domain: B)的某个页面. 当两个应用的domain
不一样时, 在被嵌入的页面中不允许使用cookie(即使用cookie实现的session会失效).

问题分析:
   在XP SP2和IE6之后,从安全性角度考虑,默认状态下不允许在iframe里使用跨站点cookie。


解决方案:
   1. 修改Client的设置
    使Client可以接受来自任何网站的Cookie(具体设置在IE选项的隐私页中)(测试通过).
   或者将两个domain都设置为受信息站点(测试通过).

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

   3. P3P
   第一种: 在要嵌入的内容中(iframe指向的站点)输出P3P的主机头声明,步骤如下:
> 打开IIS管理器 inetmgr
> 选择被嵌入iframe源站点或者目录,右键点击打开属性框
> 切换到HTTP头
> 添加
> 自定义HTTP头名: P3P
> 自定义HTTP头值: CP="CAO PSA OUR"
> 关闭属性框退出,即刻生效

   第二种: 在被嵌入页面page_onload里添加一语句:response.addHeader("P3P","CP=CAO PSA OUR")(测试通过);

猜你喜欢

转载自mazhen2010.iteye.com/blog/1508564
今日推荐