Chrome localhost Cookie未设置

时间:2011-09-08 10:54:48

标签: asp.net session google-chrome cookies

我有一个ASP.net应用程序,它使用cookie来存储用户选择的语言。 一切正常,除非我在localhost上。 用127.0.0.1替换localhost使它再次工作......为什么?

我看到了对file://的预期限制,但我实际上找不到对localhost的预期限制的任何引用。

我无法理解为什么ASP.net会话(ASP.NET_SessionId)和ASP.net表单身份验证Cookie(.FSAUTHSSO)是为localhost域正确设置的,但我的cookie不是......为什么?!

我已经搜索过很多内容并且无效:

  • 设置Chrome命令行标志--enable-file-cookies [不会 WORK]
  • 将Cookie设置为HttpOnly [DOES NOT MATTER]
  • 将到期时间更改为会话或日期... [无关紧要]
  • 将Cookie路径更改为根(/)或其他任何内容[无关紧要]

那有什么关系? :)

为什么要设置ASP.net cookie而我的不是?有什么区别?

最后一件事就是提到这也发生在IE上但在FF上工作正常。

谢谢!

亚历

11 个答案:

答案 0 :(得分:31)

Cookie专为二级和二级设计。一级域名不起作用。相反,您应该使用地址http://127.0.0.1(如您所述),或者您可以编辑您的主机文件,以将带有TLD的其他网址映射到地址127.0.0.1,例如:

yoursite.tld   127.0.0.1

进一步研究过这个问题;找到了这个答案:Cookies on localhost with explicit domain

答案 1 :(得分:19)

请尝试将cookie.Domain = null放在localhost上,否则请使用域名。

答案 2 :(得分:5)

好消息。现在可以在Chrome启动Canary构建时在localhost上设置cookie: https://code.google.com/p/chromium/issues/detail?id=551906

答案 3 :(得分:5)

这让我疯了几个小时,然后我意识到:

  1. 我最近使用了 https: // localhost并设置了具有相同名称的cookie。

  2. 这是 http: // localhost无法设置cookie的原因

  3. 我去了 https ,清除了devtools中“应用程序”选项卡中的cookie,它再次开始与 http 一起使用

答案 4 :(得分:4)

我通过访问chrome:// flags /来解决我的问题,然后搜索cookie。将以下三个标志设置为禁用...

  • 默认情况下,SameSite Cookies
  • 启用删除SameSite = None cookie
  • 没有SameSite的Cookie必须安全

答案 5 :(得分:2)

我在Chrome中遇到了同样的问题。我有cookie.Secure = true。摆脱localhost的问题为我解决了这个问题。

(如果完全相同的问题,FWIW:在FF工作,而不是IE或Chrome)

答案 6 :(得分:1)

我在chrome上遇到了一个问题,其中未来有2周到期的cookie未被设置 - 这恰好是auth cookie(.AspNet.ApplicationCookie)所以我不断被重定向回登录页面。我尝试过的其他浏览器中没有出现此问题。

我最终尝试使用自定义Cookie来确定Chrome认为当前日期之前比实际上更早 - 所以例如我放入了今天1年过期的Cookie(2月4日) -2017)并且实际上chrome将此cookie设置为2017年1月1日到期!这就解释了为什么一个2周到期的cookie已经被认为已经过期,因为chrome在实际到期时间的3个月内被淘汰,因此认为它已经过期了。

Chrome重新启动并没有解决这个问题 - 我在此阶段重新启动了PC,这已经修复了#39;错误。另外我应该注意到这只发生在localhost - 似乎每个其他网站都没问题。

答案 7 :(得分:1)

我知道这可能很愚蠢但是我刚刚接手了一个asp.net mvc应用程序,我无法让它们在本地工作。最后,另一位开发人员指出了最近添加的web.config中的一个条目。

<httpCookies httpOnlyCookies="true" requireSSL="true" />

在本地将requireSSL设置为“false”。请记住在环境中应用转换。 我希望这有帮助。

答案 8 :(得分:1)

就我的情况而言,我正在使用iisexpress(localhost:####)运行asp.net核心剃须刀页面应用程序,但我在Chrome中遇到了此问题。我的解决方法是确保sslPort(44344)的Properties \ launchSettings.json中的iisSettings具有非0的数字。将sslPort设置为0,iisexpress将不会运行。更改为44344然后在iisexpress中使用ssl运行该应用程序。或者,将Visual Studio中的项目属性和“调试”选项卡转到“启用SSL”将对launchsettings.json进行相同的更改,例如

"iisSettings": {
  "windowsAuthentication": false,
  "anonymousAuthentication": true,
  "iisExpress": {
    "applicationUrl": "http://localhost:29025/",
    "sslPort": 44344
  }
},

答案 9 :(得分:0)

issue on Chromium open since 2011,如果您明确将域设置为“localhost”,则应将其设置为false以使其正常工作或使用将域设置为127.0.0.1

答案 10 :(得分:0)

要使用> = 79的Chrome浏览器在本地计算机上运行此程序,请按照以下步骤操作。 我通过转到chrome:// flags /然后搜索cookie来解决了我的问题。将以下三个标志设置为禁用...

默认情况下,SameSite Cookies 启用删除SameSite = None cookie 没有SameSite的Cookie必须是安全的