【发布时间】:2011-10-22 11:04:01
【问题描述】:
总结
在使用 IE 10 时,ASP.Net 不会发回 Set-Cookie 标头。这意味着例如,在使用表单身份验证时,您无法使用 IE10 登录到 ASP.Net 站点。
详情
我们目前正在针对 IE 10 [Preview 2] 测试我们的一款旧版网络应用程序。
尝试使用表单身份验证登录时,如果用户代理是 IE 10 的用户代理,我们不会在响应中获得 Set-Cookie 标头。我们已经尝试使用空白的 .Net 2 和 .Net 4网站。
因为我们无法/不会相信,我们甚至通过telnet 手动运行了以下 HTTP 请求 - 在使用了所有常用工具之后 - 并得到了相同的响应。
GET http://test.ourdomain.co.uk/ HTTP/1.1
Accept: */*
Host: test.ourdomain.co.uk
User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/6.0)
Content-Length: 0
上述 HTTP 请求在响应中没有返回 Set-Cookie。然而,如果我们简单地将 User-Agent 更改为 Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/6.0) 就可以了!
其他人可以复制吗?除了影响非标准 URL 模式的问题之外,我找不到任何 IE10 cookie 的已知问题。
修补程序
devio 发布原始答案后,nullptr 已确认现在有一个 hotfix for this。
http://support.microsoft.com/kb/2600088
我已将修补程序推广到主要问题,因为它更方便将来参考,但请对提到的用户进行投票。
【问题讨论】:
-
注意 - 上面的例子是我们在 get 请求上设置一个 cookie(使用 Response.SetCookie())
-
使用 browserCaps 的另一种可能解决方案:stackoverflow.com/a/13474958/1191905
-
我们是否将热修复应用到 IIS 或客户端计算机?
-
@magic-c0d3r 这是 .NET 本身的修补程序,因此应应用于托管 IIS 的机器(即 Web 服务器)
-
.NET 2.0/3.5 的修补程序也可能感兴趣:support.microsoft.com/kb/2600100