摘要
当使用IE10时,ASP.Net不发送回Set-Cookie
头。这意味着,例如,当使用窗体身份验证时,您不能使用IE10登录到ASP.Net站点。
Detail
我们目前正在针对IE 10 Preview 2测试我们的一个遗留web应用程序。
当尝试使用表单身份验证登录时,如果用户代理是IE 10的用户代理,则在响应中不会得到Set-Cookie
标头。我们已经在空白的.Net 2和.Net 4站点上尝试过此方法。
因为我们不能或不会相信,我们甚至在使用了所有常用工具之后,通过telnet
手动运行了follow 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)
,它就可以工作!
其他人能复制这个吗?除了影响非标准IE10模式的问题之外,我找不到任何关于URL的已知问题。
热修复
在devio发布了原始答案后,通过解决方法,nullptr已经确认现在有一个hotfix for this。
http://support.microsoft.com/kb/2600088
我已经将修补程序推广到了主要问题,因为它只是为了方便将来的参考,但请对提到的用户投上一票。
发布于 2011-08-08 23:19:52
在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>
发布于 2013-03-20 05:07:41
问题出在一些IIS实例认为IE10是一个无cookies的浏览器(即不支持cookies)。在我们的问题案例中,服务器设置了身份验证cookie并将其发送回浏览器,但随后忽略了后续请求中的cookie。
解决方案是要么修补浏览器功能,让它知道IE10可以做cookies (在本页的另一个答案中概述),要么改变默认行为,强制它使用cookies,即使它认为浏览器不能做cookies。
我们刚刚在web.config中的forms部分添加了以下内容:
cookieless="UseCookies"
<authentication mode="Forms">
<forms name=".AUTH" cookieless="UseCookies" loginUrl="/" timeout="10000" path="/" />
</authentication>
发布于 2013-03-21 00:28:06
谢谢你的帮助。它不起作用。
在命令提示符C:\WINDOWS\microsoft.net\Framework\v2.0.50727>aspnet_regbrowsers.exe -i
再次感谢您的反馈
https://stackoverflow.com/questions/6983732
复制相似问题