首页

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的主机头声明:
给个连接 百度文库
贴个C#代码

复制代码

代码如下:

if (Request.Browser.Browser.ToUpper().Contains("IE"))
Response.Headers.Add("P3P", "CP=CAO PSA OUR");