0

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

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

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

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

4

3 回答 3

0

对我们来说,ASP.NET:弹出式浏览器窗口和会话 cookie有相关的答案。在我们的例子中,使用了一个 Jetty 网络服务器,所以要小心你过滤的内容。

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

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

  1. IE8 在弹出窗口中丢失会话 cookie (这也被建议作为对有关 IE7 的类似问题的回答: ASP.NET 2.0 Session variables lost in popup window in IE 7 when deploy on server
  2. IE8 在重定向后打开新窗口时丢失 cookie(在第一个问题中也提到)是从模式弹出窗口或类似的弹出窗口打开的问题。IE 8 beta 版本,所以可能无关紧要。
  3. IE8 丢失会话详细信息(Java 库中的错误,因此可能也不相关)

如果我不得不总结一下:

  1. 有很多问题似乎与 asp.net 有共同点。尝试浏览它们。
  2. 您说没有特定的 Internet Explorer 版本受到影响。这意味着您可能会针对不同版本的 IE 查看不同的问题。
  3. a)我认为stackoverflow应该有最多的答案。
于 2012-06-01T14:36:24.497 回答
0

我猜您的网站没有有效的P3P标头来定义您如何跟踪用户,因此 IE 不会将 [session] cookie 与 http 请求一起转发。

您可以通过在 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>
于 2012-05-11T12:10:49.327 回答
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\"");
}

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

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

于 2013-01-14T18:58:05.127 回答