Firefox不接受ASP.NET身份验证cookie

时间:2012-06-06 08:46:32

标签: asp.net vb.net firefox cookies form-authentication

在将我们的应用程序部署到QA环境时,我遇到了Firefox浏览器的这个问题。我们有一个带有表单身份验证的ASP.NET 4应用程序在我们的应用程序中,我们有2个cookie:1个用于身份验证票证,另一个用于其他信息。 问题是:每次我使用Firefox登录系统时,我都会退回到登录页面。 当我使用Fiddle来调查这个问题时,我发现由于某种原因,Firefox不会“接受”我们的cookie:第一个请求登录页面,我们的服务器在标题中返回cookie:

Set-Cookie: .ASPXAUTH_Imp=...; expires=Thu, 07-Jun-2012 06:37:24 GMT; path=/
Set-Cookie: .ASPXAUTH=...; expires=Wed, 06-Jun-2012 09:57:24 GMT; path=/ 

但是,在下一个响应中,我们的cookie不会出现在请求标头中。 任何其他浏览器(IE,Chrome等)都不会发生此问题。在其他浏览器中,cookie将被接受并在下一个请求中传递。

当我查看存储在Firefox中的cookie时,我可以看到我的网站,但它只有ASP.NET_sessionID cookie。没有其他2个cookie的痕迹。 另一个有趣的一点是这个问题只发生在QA环境中(具有LAN IP 10.16.x.x.我试图使用机器名称,问题仍然存在)。当我使用localhost在Visual Studio中进行调试时,它可以正常工作。 这是我向客户发送Cookie的代码:

' ASP.NET authentication cookie '
Dim cookieExpiration As DateTime = DateTime.Now.AddMinutes(Constants.WebSettingsConst.TimeOut)
Dim authenticationTicket = New FormsAuthenticationTicket(2, CurrentContext.UserContextID(), DateTime.Now, cookieExpiration, True, String.Empty, FormsAuthentication.FormsCookiePath)
Dim encryptedTicket As String = FormsAuthentication.Encrypt(authenticationTicket)
Dim authCookie = New HttpCookie(FormsAuthentication.FormsCookieName, encryptedTicket)
authCookie.Expires = authenticationTicket.Expiration
authCookie.Path = FormsAuthentication.FormsCookiePath
'HttpContext.Current.Response.Cookies.Remove(FormsAuthentication.FormsCookieName)'
HttpContext.Current.Response.Cookies.Add(authCookie)

1 个答案:

答案 0 :(得分:0)

听起来很明显,但您是否检查过FireFox中的Cookie设置。如果您进入隐私并选择使用自定义历史记录,您可以指定不接受来自第三方的cookie或仅接受来自特定网站的cookie。

我和你完全一样,没有问题。

Dim authTicket As New FormsAuthenticationTicket(1, userIdentity, Date.Now, _     
     Date.Now.AddMinutes(15), False, userData)
Dim encTicket As String = FormsAuthentication.Encrypt(authTicket)
Dim faCookie As New HttpCookie(FormsAuthentication.FormsCookieName, encTicket)
Response.Cookies.Add(faCookie)