我有一个带有集成iframe的asp.net网页。从这个iframe中我调用window.open来打开一个弹出窗口。弹出网址是绝对的,但在同一个域内。
对于大约1%使用Internet Explorer(多个版本)的用户,asp.net会话对象在弹出窗口中丢失(null)。
我尝试收集设置信息以识别来自一组用户但没有结果的模式。一个理论是他们都是Citrix的客户,但事实并非如此。
有没有人经历过类似的事情并解决了它?
答案 0 :(得分:0)
我猜你的网站没有定义如何跟踪用户的有效P3P标题,因此IE不会使用http请求转发[会话] Cookie。
您可以通过在web.config中添加示例P3P-header来验证这一点。您需要了解不同令牌的含义,以及此示例标题是否与您的用例匹配,或者您是否需要创建自己的用例。
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="P3P" value="CP="NON COR CUR OUR BUS NAV"" />
</customHeaders>
</httpProtocol>
</system.webServer>
答案 1 :(得分:0)
对我们来说,ASP.NET: Popup browser windows and session cookies有相关的答案。在我们的例子中,使用Jetty网络服务器,所以要小心过滤。
从桌面上的“常规”快捷方式启动浏览器,引用该网站。用IE8。 (我没有找到我的MSDN参考,但我认为它只是Windows XP。)注意:Citrix用户经常被迫使用桌面上的链接。因此,这可能会解决Citrix部分问题。
这里有更多非常相似的问题。您是否在stackoverflow上查看了所有帖子,包括:
如果我不得不总结一下:
答案 2 :(得分:0)
请遵循以下指南:http://www.w3.org/P3P/details.html
您应该构建自己的P3P策略。
例如,如果将其添加到Global.asax中,则可以在IE8中使用:
protected void Application_BeginRequest(object sender, EventArgs e)
{
HttpContext.Current.Response.AddHeader("p3p", "CP=\"IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT\"");
}
但是!!! 不要只复制上面的示例,因为政策必须反映您网站上的实际私密性。否则,当浏览器验证您的内容/行为与您所声明的内容/行为相比时,这可能会产生影响。
没有人愿意将某些浏览器供应商列入黑名单,对吗?