IE下iframe跨域登录session丢失问题

网上有这类文章,一般表现为a站点有iframe,iframe的src指向b站,b站登录后保存该域cookie,下次再访问的时候就可以带上这个cookie,但IE下失效。

而我的情况有些类似,但不尽然;

我的是a站有iframe,但src是指向自己(如,login.aspx页)。然后login有个form,action到B站点,然而去B站点就只是拿一些资料,加密后给回a站点进行登录(cookie写入)。

但发现此时的cookie已经写不进了。

这里应该就是session已经变了,说应该是因为我没确认过。

解决方法也很简单,和网上的一样。

问题根源:

  IE6/IE7支持的P3P(Platform for Privacy Preferences Project (P3P) specification)协议默认阻止第三方无隐私安全声明的cookie,Firefox目前还不支持P3P安全特性,firefox中自然也不存 在此问题了。Mircosoft对此的具体描述可以参见 Privacy in Internet Explorer 6 

解决办法是在要嵌入的内容中(iframe指向的站点)输出P3P的主机头声明:

给个连接 百度文库

http://wenku.baidu.com/view/ea504514866fb84ae45c8d2c.html

贴个C#代码

if (Request.Browser.Browser.ToUpper().Contains("IE"))
                Response.Headers.Add("P3P", "CP=CAO PSA OUR");
posted @ 2013-02-05 12:14  BePast  阅读(5364)  评论(7编辑  收藏  举报