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

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

在将我们的应用程序部署到 QA 环境时,我在使用 Firefox 浏览器时遇到了这个问题。我们有一个带有表单例份验证的 ASP.NET 4 应用程序。在我们的应用程序中,我们有 2 个 cookie:1 个用于身份验证票证,另一个用于其他信息。 问题是:每次我使用 Firefox 登录系统时,都会跳回登录页面。 当我使用 Fiddle 调查这个问题时,我发现出于某种原因 Firefox 不“接受”我们的 cookie: 对登录页面的第一个请求,我们的服务器在 header 中返回 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 不会出现在请求 header 中。 此问题不会发生在任何其他浏览器(IE、Chrome 等)中。在其他浏览器中,cookie 被接受并在下一个请求中传递。

当我查看存储在 Firefox 中的 cookie 时,我可以看到我的网站,但它只有 ASP.NET_sessionID cookie。没有其他 2 block cookies 的踪迹。 更有趣的一点是这个问题只发生在 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)

最佳答案

这听起来很明显,但是您是否检查过 FireFox 中的 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)

关于asp.net - Firefox 不接受 ASP.NET 身份验证 cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10910951/

相关文章:

php - Firefox 中奇怪的文本突出显示

c# - 获取所有查询字符串对并初始化字典的最佳方法

html - 如何使用 html 来设置 vb.net 桌面应用程序的样式?

c# - 如何在 VB.Net 上使用 Regex 删除字符串中的重复字符(出现次数超过 3 次)?

javascript - 使用 JavaScript 设置 oninput 事件

CSS 过滤器 : Invert does not work in mozilla

ASP.NET AJAX Function.createDelegate vs Function.createCallback?

c# - 使用 DataTable.js 在 asp.net gridview 中使用下拉列表进行列式过滤器

asp.net - (客户端)禁用提交按钮的最佳方法是什么?

c# - 在执行时更改 Gecko Webbrowser 中的代理设置?