症状
<script type=text/javascript>loadTOCNode(1, 'symptoms');</script>
如果别的站点要在Iframe中使用本网站的时候会发现,本网站实际上是不能保存Session的,如何被frame的页面如果像访问自己站点的Session会发现这个Session实际上是null,例如本网站上有一个登录窗口login.aspx,登录窗口登录之后就导航到index.aspx页面,index.aspx页面的访问需要login.aspx创建的Session["userid"]的存在,当我的这个网站被别的网站frame的时候,我们可以发现在login.aspx实际上是可以创建Session的,但是当页面导航到index.aspx的时候却发现Session已经丢失了,这就导致登录失败。
原因
Internet Explorer 6 引入用于隐私首选项 (P3P) 项目平台支持,如果 FRAMESET 或父窗口引用其他站点内 FRAME 或内子窗口, 子站点认为第三方内容。 它使用默认隐私设置是
中型 , InternetExplorer自动拒绝 Cookie 来自第三方站点。
解决方法
1、把IE隐私级别设置为低,这个不好实现,不能要求用户改变设置。
2、IIS设置
在站点属性里选择HTTP头选项卡,在自定义Http头里点击添加按钮,在弹出的窗口中的"自定义HTTP头名"中输入
P3P,
在"自定义HTTP头值"中输入CP="CAO PSA OUR"
即可,此项设置可以单独应用于某个目录而不应用于整个站点。