单击定位新选项卡的链接时,IE11不会发送会话cookie(在第一次请求时)

时间:2014-01-09 21:32:39

标签: cookies session-state internet-explorer-11

从IE11打开初始新标签(目标_blank)时,我遇到了一些问题。

当我关闭IE11的所有实例然后打开一个全新的浏览器并导航到测试网页(default.aspx)时,该页面会在会话中存储一个值并在页面上显示会话ID。如果我刷新页面,会话ID保持不变。该页面有一个自身链接(default.aspx),目标为_blank。如果单击此链接,将打开一个新选项卡,但会话ID不同。如果我然后刷新原始窗口,则会话ID现在与新窗口匹配。

<%@ Page Language="C#" AutoEventWireup="true" Inherits="System.Web.UI.Page" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
<% Session["StoredValue"]="Test"; %>

<div>SessionID: <%=Session.SessionID%></div>

<a href="/default.aspx" target="_blank">New Window</a>
<a href="http://www.google.com" target="_blank">3rd Party Window</a>

</body>
</html>

看来这个问题只发生在新标签中打开的同一个域的第一个窗口上(我已经验证了target =“_ blank”的问题,并且在点击链接时按住CTRL)。

  • 当我看到Fiddler的cookie流量时,我可以看到 会话cookie在初始请求中正常发送 Default.aspx的。当我单击链接以在新选项卡中打开页面时 会话cookie未在请求标头中发送。
  • 如果我重新启动浏览器,请转到测试页面,打开一个新选项卡 手动将链接目标粘贴到其中,然后发送cookie 正确地在请求标头和新标签中的会话中 与预期的原始标签匹配。
  • 如果我重新启动浏览器,请转到测试页面,从中打开谷歌 在测试页中链接定位_blank,然后单击该链接 在新标签页中打开测试页面,cookie也会正确发送 在请求标头中,来自新窗口的会话匹配 原始窗口如预期的那样。

我认为这是一个客户端问题,但该网站是在安装了.NET 4.51的4.0集成网站中从Windows Server Standard 2008 R2 SP 1运行的(也尝试过只安装了4.5)。

客户端是Windows 7 64位运行IE11(11.0.9600.16476)。我已经在IE11上运行Windows 7的其他计算机上验证了该问题,并确认在桌面模式下Windows 8中的IE10不是问题。在Chrome和Firefox中,一切都按预期工作。

我已经确认问题仍然存在,即使我:

  • 将安全性从“中高”移至“中等”
  • 禁用保护模式
  • 更改隐私以接受所有Cookie
  • 将网站添加到“本地Intranet”或“受信任的站点”区域网站列表
  • 在响应标头中设置P3P紧凑隐私策略,说明未收集或使用任何信息。
  • 在响应标头中设置一个P3P契约隐私政策,通常会被接受以允许在以前版本的IE中使用iframe中的第三方Cookie。
  • 将网站ASP.NET会话状态设置更改为Cookieless =“UseCookies”或“false”或完全删除该属性(ASP.NET状态服务器)。

有什么想法吗?还有其他人看过这个问题或者类似的吗?

4 个答案:

答案 0 :(得分:4)

根据微软的说法,这是一个活跃的错误。显然没有服务器端方法来解决这个问题。

Link to bug report

答案 1 :(得分:2)

不是解决方案,而是线索: 我们注意到了类似的行为,并将其跟踪到root / browserconfig.xml请求,导致用户无法进行身份验证。服务器发送了一个新的会话cookie,因为Windows没有发送现有的cookie。随后的请求然后发送新的会话cookie值。我们更改了服务器以查找此请求,而不是设置响应cookie。

答案 2 :(得分:0)

这不是解决方案,但是:

尝试单击鼠标中键。如果那对您有用100%的时间(对我有用)

js: links with target='_blank' on ie remove defaultBehaviour and trigger middle click.

问题解决了。

答案 3 :(得分:-1)

我的登录时遇到同样的问题,但我们尝试通过更改IE11或其他有问题的浏览器中的某些设置来解决此问题。

转到工具=&gt;互联网选项=&gt;隐私 单击“站点”按钮。添加mydomain.com&amp;单击“允许”按钮。 重新启动浏览器。