我有一个带有集成 iframe 的 asp.net 网页。在这个 iframe 中,我调用 window.open 来打开一个弹出窗口。弹出 url 是绝对的,但在同一个域中。
对于使用 Internet Explorer(多个版本)的大约 1% 的用户,asp.net 会话对象在弹出窗口中丢失(空)。
我尝试收集设置信息以识别一组用户的模式,但没有结果。一种理论是他们都是 Citrix 客户,但事实并非如此。
有没有人经历过类似的事情并解决了?
我有一个带有集成 iframe 的 asp.net 网页。在这个 iframe 中,我调用 window.open 来打开一个弹出窗口。弹出 url 是绝对的,但在同一个域中。
对于使用 Internet Explorer(多个版本)的大约 1% 的用户,asp.net 会话对象在弹出窗口中丢失(空)。
我尝试收集设置信息以识别一组用户的模式,但没有结果。一种理论是他们都是 Citrix 客户,但事实并非如此。
有没有人经历过类似的事情并解决了?
对我们来说,ASP.NET:弹出式浏览器窗口和会话 cookie有相关的答案。在我们的例子中,使用了一个 Jetty 网络服务器,所以要小心你过滤的内容。
从桌面上引用网站的“常规”快捷方式启动浏览器。用IE8。(我没有找到我的 MSDN 参考资料,但我认为它仅限于 Windows XP。) 注意:Citrix 用户经常被迫使用桌面上的链接。因此,这可能会解决 Citrix 部分的问题。
这里有更多非常相似的问题。您是否查看过 stackoverflow 上的所有帖子,包括:
如果我不得不总结一下:
我猜您的网站没有有效的P3P标头来定义您如何跟踪用户,因此 IE 不会将 [session] cookie 与 http 请求一起转发。
您可以通过在 web.config 中添加示例 P3P-header 来验证这一点。您将需要了解不同标记的含义,以及此示例标头是否与您的用例匹配,或者您是否需要创建自己的标头。
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="P3P" value="CP="NON COR CUR OUR BUS NAV"" />
</customHeaders>
</httpProtocol>
</system.webServer>
请遵循此处的指南: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\"");
}
但!!!不要只是复制上述示例,因为该政策必须在您的网站上反映您的实际隐私政策。否则,当浏览器验证您的内容/行为与您所说的相比时,这可能会产生影响。
没有人愿意被某些浏览器供应商列入黑名单,对吧?