在弹出窗口中丢失asp.net会话。仅在IE中,仅适用于某些用户

时间:2012-05-11 12:02:44

标签: javascript asp.net session iframe

我有一个带有集成iframe的asp.net网页。从这个iframe中我调用window.open来打开一个弹出窗口。弹出网址是绝对的,但在同一个域内。

对于大约1%使用Internet Explorer(多个版本)的用户,asp.net会话对象在弹出窗口中丢失(null)。

我尝试收集设置信息以识别来自一组用户但没有结果的模式。一个理论是他们都是Citrix的客户,但事实并非如此。

有没有人经历过类似的事情并解决了它?

3 个答案:

答案 0 :(得分:0)

我猜你的网站没有定义如何跟踪用户的有效P3P标题,因此IE不会使用http请求转发[会话] Cookie。

您可以通过在web.config中添加示例P3P-header来验证这一点。您需要了解不同令牌的含义,以及此示例标题是否与您的用例匹配,或者您是否需要创建自己的用例。

<system.webServer>
  <httpProtocol>
    <customHeaders>
      <add name="P3P" value="CP=&quot;NON COR CUR OUR BUS NAV&quot;" />
    </customHeaders>
  </httpProtocol>
</system.webServer>

答案 1 :(得分:0)

对我们来说,ASP.NET: Popup browser windows and session cookies有相关的答案。在我们的例子中,使用Jetty网络服务器,所以要小心过滤。

从桌面上的“常规”快捷方式启动浏览器,引用该网站。用IE8。 (我没有找到我的MSDN参考,但我认为它只是Windows XP。)注意:Citrix用户经常被迫使用桌面上的链接。因此,这可能会解决Citrix部分问题。

这里有更多非常相似的问题。您是否在stackoverflow上查看了所有帖子,包括:

  1. IE8 losing session cookies in popup windows (这也被建议作为IE7类似问题的答案: ASP.NET 2.0 Session variables lost in pop up window in IE 7 when deployed on server
  2. IE8 loses cookies when opening a new window after a redirect(在第一个问题中也提到)是弹出窗口从模态弹出窗口打开的问题。 IE 8测试版发布,所以可能无关紧要。
  3. IE8 losing session details(java库中的错误,可能也不相关)
  4. 如果我不得不总结一下:

    1. 有很多问题似乎与asp.net有共同之处。试着仔细研究一下。
    2. 您说没有特定的Internet Explorer版本受到影响。这意味着您可能会针对不同版本的IE查看不同的问题。
    3. a)我认为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\"");
}

但是!!! 不要只复制上面的示例,因为政策必须反映您网站上的实际私密性。否则,当浏览器验证您的内容/行为与您所声明的内容/行为相比时,这可能会产生影响。

没有人愿意将某些浏览器供应商列入黑名单,对吗?