摘要
ASP.Net在使用IE 10时不会发回Set-Cookie
标题。例如,在使用表单身份验证时,您无法使用IE10登录到ASP.Net站点。
详细
我们目前正在针对IE 10 [预览2]测试我们的旧版网络应用程序之一。
当尝试使用Forms身份验证登录时,如果用户代理是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
我已将此修补程序提升为主要问题,因为它对于将来的参考更为方便,但请对所提及的用户进行投票。
答案 0 :(得分:71)
问题在于一些IIS实例认为IE10是一个无cookie的浏览器(即不支持cookie)。在我们的问题情况下,服务器正在设置身份验证cookie并将其发送回浏览器,但随后忽略了后续请求中的cookie。
解决方案是修补浏览器功能,以便它知道IE10可以执行cookie(在此页面上的另一个答案中概述),或更改默认行为以强制它使用cookie,即使它认为浏览器不能做饼干。
我们刚刚将以下内容添加到web.config中的表单部分:
<强>无Cookie = “UseCookies”强>
<authentication mode="Forms">
<forms name=".AUTH" cookieless="UseCookies" loginUrl="/" timeout="10000" path="/" />
</authentication>
答案 1 :(得分:66)
在MS Connect上找到此条目,行为是公认的错误。
建议的解决方法(来自条目):
==解决方法==
同时使其发挥作用并避免类似问题 未来,我用一个文件〜\ App_Browsers \ BrowserFile.browser了 以下内容:
<browsers>
<browser refID="Default">
<capabilities><!-- To avoid wrong detections of e.g. IE10 -->
<capability name="cookies" value="true" />
<capability name="ecmascriptversion" value="3.0" />
</capabilities>
</browser>
</browsers>
答案 2 :(得分:33)
此问题有一个修补程序[1]。
1)http://support.microsoft.com/kb/2600088
1)http://support.microsoft.com/kb/2600217(替换以前的KB)
此外,[2]表明这将在2012年1月发布Windows Update。
答案 3 :(得分:3)
谢谢你的帮助。它没有用。
我从site复制了文件
到C:\WINDOWS\microsoft.net\Framework\v2.0.50727\CONFIG\Browsers
运行命令提示符C:\WINDOWS\microsoft.net\Framework\v2.0.50727>aspnet_regbrowsers.exe -i
重新启动IIS。
对网站进行了测试,但没有任何错误。
再次感谢您的反馈
答案 4 :(得分:2)
nullptr answer的更新。
我今天尝试下载Microsoft KB2600088。通过电子邮件收到链接后,我点击了它,然后它引导我显示它已不再可用的页面。
试试这个:http://support.microsoft.com/kb/2600217
该链接是KB2600088和KB2628838的替代品。
MIcrosoft .Net Framework 4.5现已上市。
答案 5 :(得分:0)
安装了每个人都提到的各种补丁,无论出于何种原因,问题都没有得到解决。
已安装.NET Framework 4.5 Full,问题就消失了。
您不必将任何项目更新为目标4.5。只需将其安装在服务器上即可。