IE浏览器跨域访问iframe 中 Cookie/Session丢失解决方案
来源:互联网 发布:淘宝深夜食堂视频全集 编辑:程序博客网 时间:2024/05/01 19:23
偶然中发现一个IE浏览器的问题:
站点aa.com的页面a.aspx中存在一个iframe,iframe的src为站点bb.com的b.aspx。b.aspx设置了一个COOKIE(不管临时保存还是长期保存),然后刷新aa.com/a.aspx,bb.com/b.aspx也会被刷新,这时候会发现第二次向bb.com/b.aspx的请求里面并没有带入第一次设置的COOKIE。
更确切地说:IE浏览器丢掉了框架中不同域的COOKIE。
查看浏览器的隐私选项,默认是“中”。现在把隐私的等级修改成“低”,再次做上面的测试,然后发现框架中的COOKIE可以被带入了。
从这个现象来看,应该是IE出于安全考虑而做了限制。但是!!!处于不同的两个域的的页面,应该被看成打开了两个互不相关的浏览器窗口,大家各自设置自己的COOKIE,各自带入到下次请求中,只要互不影响,不应该受到限制。
恩,那么,为什么要限制呢?看来还是微软的程序员对自己浏览器的安全没什么信心,担心同一浏览器窗口不同域的情况下,黑客仍可能获取另一域的COOKIE,所以干脆把其中一个域的COOKIE干掉!!!人家FireFox为什么就没这种限制?
===========================================================================
站点aa.com的页面a.aspx中存在一个iframe,iframe的src为站点bb.com的b.aspx。b.aspx设置了一个COOKIE(不管临时保存还是长期保存),然后刷新aa.com/a.aspx,bb.com/b.aspx也会被刷新,这时候会发现第二次向bb.com/b.aspx的请求里面并没有带入第一次设置的COOKIE。
更确切地说:IE浏览器丢掉了框架中不同域的COOKIE。
查看浏览器的隐私选项,默认是“中”。现在把隐私的等级修改成“低”,再次做上面的测试,然后发现框架中的COOKIE可以被带入了。
从这个现象来看,应该是IE出于安全考虑而做了限制。但是!!!处于不同的两个域的的页面,应该被看成打开了两个互不相关的浏览器窗口,大家各自设置自己的COOKIE,各自带入到下次请求中,只要互不影响,不应该受到限制。
恩,那么,为什么要限制呢?看来还是微软的程序员对自己浏览器的安全没什么信心,担心同一浏览器窗口不同域的情况下,黑客仍可能获取另一域的COOKIE,所以干脆把其中一个域的COOKIE干掉!!!人家FireFox为什么就没这种限制?
===========================================================================
问题根源:
IE6/IE7支持的P3P(Platform for Privacy Preferences Project (P3P) specification)协议默认阻止第三方无隐私安全声明的cookie,Firefox目前还不支持P3P安全特性,firefox中自然也不存在此问题了。Mircosoft对此的具体描述可以参见Privacy in Internet Explorer 6
解决方法:
很简单,在要嵌入的内容中(iframe指向的站点)输出P3P的主机头声明,步骤如下(Session variables are lost if you use FRAMESET in Internet Explorer 6):
1.打开IIS管理器 inetmgr
2.选择被嵌入iframe源站点或者目录,右键点击打开属性框
3.切换到HTTP头
4.添加
5.自定义HTTP头名: P3P
6.自定义HTTP头值: CP="CAO PSA OUR"
7.关闭属性框退出,即刻生效
至于上面CAO PSA OUR的具体意思,还是请参考前面的文章:Privacy in Internet Explorer 6
- IE浏览器跨域访问iframe 中 Cookie/Session丢失解决方案
- 在IE浏览器中iframe跨域访问cookie/session丢失的解决办法
- IE浏览器iframe跨域丢失Session问题
- iframe 跨域访问session/cookie丢失问题解决方法
- iframe 跨域访问session/cookie丢失问题解决方法
- IE中iframe跨域丢失Session问题 p3p
- IE中iframe跨域丢失Session问题
- IE中iframe跨域丢失Session问题 p3p
- IE中iframe跨域丢失Session问题(续 p3p)
- 解决IE浏览器中Iframe跨域访问不能读写cookie问题
- 解决IE浏览器中Iframe跨域访问不能读写cookie问题
- 用P3P header解决IE下iframe跨域访问时候session丢失的问题
- IIS解决IFRAME中COOKIE、SESSION丢失
- IE下iframe中session丢失
- IE中iframe跨域Session丢失问题
- iframe跨域访问cookie、Session
- PHP关于IE的iframe跨域导致session丢失
- iframe 跨域访问,session丢失的问题解决方案
- 58、Oracle RMAN 的 show,list,crosscheck,delete命令整理
- Windows下PHPUnit安装
- 购买汽车参考
- 59、更改oracle10g的归档模式和归档路径
- 厌恶性盲区(schlep blindness)
- IE浏览器跨域访问iframe 中 Cookie/Session丢失解决方案
- openrowset的问题
- ESP法和二次断点法脱壳总结
- 基于ExtJS 3.1内存回收改进
- 60、StatsPack 使用初解
- 黑马程序员——C#中的循环结构
- 關於SOA的概念理解
- 在WINDOWS上将Python 文件转为(生成)可执行程序 exe 文件
- 自定义scrollbar样式