IE10用户代理导致ASP.Net不发回Set-Cookie(IE10不设置cookie)

概要

使用IE 10时,ASP.Net不会发送Set-Cookie标头。例如,当使用Forms Authentication时,您无法使用IE10login到ASP.Net站点。

详情

我们目前正在testing其中一个针对IE 10的旧版networking应用[Preview 2]。

当尝试使用Forms Authentication进行login时,如果用户代理是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 。 然而,如果我们只是简单地将用户代理改成Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/6.0)

其他人可以复制这个吗? 除了影响非标准URL模式的问题之外,我找不到IE10 Cookie的任何已知问题。

修复

在devio发布原始答案后,解决方法是, nullptr确认现在有一个修补程序 。

http://support.microsoft.com/kb/2600088

我已经提出了主要问题的修补程序,因为它只是更便于将来参考,但请投票提出用户。

在MS Connect上find这个条目,这种行为是一个公认的错误。

build议的解决方法(来自条目):

==解决方法==

在此期间,为了避免类似的问题,我使用下面的文件〜\ App_Browsers \ BrowserFile.browser:

 <browsers> <browser refID="Default"> <capabilities><!-- To avoid wrong detections of eg IE10 --> <capability name="cookies" value="true" /> <capability name="ecmascriptversion" value="3.0" /> </capabilities> </browser> </browsers> 

问题在于一些IIS实例认为IE10是一个无cookie的浏览器(即不支持cookie)。 在我们的问题案例中,服务器设置了身份validationcookie并将其发送回浏览器,但随后忽略了cookie。

解决scheme是修补浏览器function,以便它知道IE10可以执行cookie(在本页的另一个答案中概述),或者更改默认行为以强制它使用cookie,即使它认为浏览器不能执行cookie。

我们只是在web.config中的表单部分添加了以下内容:

Cookie的= “UseCookies”

 <authentication mode="Forms"> <forms name=".AUTH" cookieless="UseCookies" loginUrl="/" timeout="10000" path="/" /> </authentication> 

有一个修补程序可用于此问题[1]。

1) http://support.microsoft.com/kb/2600088
1) http://support.microsoft.com/kb/2600217 (取代以前的KB)

另外,[2]build议这将在2012年1月份发布Windows Update。

2) http://www.hanselman.com/blog/BugAndFixASPNETFailsToDetectIE10CausingDoPostBackIsUndefinedJavaScriptErrorOrMaintainFF5ScrollbarPosition.aspx

感谢您的帮助。 它没有工作。

  1. 我将该文件从网站复制到C:\WINDOWS\microsoft.net\Framework\v2.0.50727\CONFIG\Browsers

  2. 运行命令提示符C:\WINDOWS\microsoft.net\Framework\v2.0.50727>aspnet_regbrowsers.exe -i

  3. 重新启动IIS。

  4. testing该网站,它没有任何错误的工作。

再次感谢你的反馈

nullptr答案的更新。

我今天试了下载微软KB2600088。 通过电子邮件收到链接后,我点击它,然后它导致我说,它不再可用的页面。

试试这个: http : //support.microsoft.com/kb/2600217

该链接是KB2600088和KB2628838的替代品。

微软.Net Framework 4.5现在也是可用的。

安装了所有人都提到的各种补丁,无论出于什么原因,问题都没有解决。

安装了.NET Framework 4.5 Full,问题就消失了。

您不必更新任何项目以达到目标4.5。 只需将其安装在服务器上。