无论浏览器cookie设置如何,都不在IE9中设置ASP.NET Forms身份验证cookie

时间:2012-02-03 04:57:51

标签: asp.net authentication cookies

我们有一个在.NET 3.5上运行的ASP.NET应用程序,并且遇到了在IE9上没有设置表单身份验证cookie的问题。我们可以在HTTP标头中看到响应中存在Set-Cookie标头,但以下请求不包含该cookie。

我已尝试更改IE中可能找到的与Cookie有关的所有设置,但没有任何帮助。具体做法是:

  

工具>选项>安全>可信站点>加入..

     

工具>选项>安全>取消选中“启用保护模式”

     

工具>选项>隐私>接受所有Cookie(最低)

     

工具>选项>隐私>网站>加入..

     

工具>选项>隐私>高级>覆盖自动..

     

工具>选项>隐私>高级>始终允许会话cookie

这是带有cookie的响应的标题,后跟下一个不包含它的请求:

HTTP/1.1 302 Found
Date: Sun, 29 Jan 2012 01:45:17 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
Location: /Default.aspx
Set-Cookie: MyApp=34C244EF0AAD...; expires=Sun, 29-Jan-2012 03:45:17 GMT; path=/
Cache-Control: private
Content-Type: text/html; charset=utf-8
Content-Length: 8520


GET /Default.aspx HTTP/1.1
Accept: text/html, application/xhtml+xml, */*
Referer: http://app.myserver.edu/sec/login.aspx
Accept-Language: en-US
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0; MALC)
UA-CPU: AMD64
Accept-Encoding: gzip, deflate
Connection: Keep-Alive
Host: app.myserver.edu
Pragma: no-cache
Cookie: ASP.NET_SessionId=nybswv45aezj5wioscv832jg

有没有办法找出为什么IE9没有设置cookie?我可以在我的Web.config中调整哪些会影响这个?我的身份验证部分是:

    <authentication mode="Forms">
        <forms name="MyApp" loginUrl="/sec/login.aspx"/>
    </authentication>

2 个答案:

答案 0 :(得分:2)

Simon Svensson的评论是正确的。上面发布的标题很旧,但不像标题中的日期那么旧。服务器时间关闭了几天,所以当服务器发送过期时间时,即使它比服务器响应时间早两个小时,它也会超过客户端时钟的过期时间。

修复服务器时钟解决了问题。谢谢西蒙!

答案 1 :(得分:0)

如果要在IFRAME中加载ASP.NET网站,则需要包含P3P标头。见Cookie blocked/not saved in IFRAME in Internet Explorer

我相信您的网站正在使用Chrome,Firefox等,因为您特别提到了IE9。