Chrome localhost cookie 未设置

Posted

技术标签:

【中文标题】Chrome localhost cookie 未设置【英文标题】:Chrome localhost cookie not being set 【发布时间】:2011-11-12 21:34:55 【问题描述】:

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

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

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

我已经用谷歌搜索了很多,但没有任何效果:

设置 Chrome 命令行标志 --enable-file-cookies [不 工作] 将 cookie 设置为 HttpOnly [DOESN'T MATTER] 将过期时间更改为会话或日期...[不重要] 将 Cookie 路径更改为根目录 (/) 或其他任何内容 [不重要]

那么重要的是什么? :)

为什么可以设置 ASP.net cookie 而我的却不能?有什么区别?

最后要提一下,这也发生在 IE 上,但在 FF 上运行良好。

谢谢!

亚历克斯

【问题讨论】:

Options->Under the Hood->Privacy->Content settings 中的 cookie 设置是什么?或者您是否有任何应用于 localhost 的异常? 我没有碰过谷歌浏览器的设置。您要求的设置为:Cookies:允许设置本地数据(推荐)。我也没有设置任何例外...没有触及任何默认设置... 4 年后,今年是 2015 年,这仍然是 is a problem。 由于 localhost 服务器经常在不同的端口下运行,我应该提一下,您可以尝试使用没有明确端口的主机名设置 cookie 的 url。例如。而不是cookie.url = '127.0.0.1:3001';,你可以试试cookie.url = '127.0.0.1';。这样做对我有用。请参阅此处了解更多信息:***.com/questions/1612177/… 试试 cookie.url='' ;让浏览器决定 【参考方案1】:

只需使用 Mozilla - 它就像一个魅力。没有问题 - 无需额外设置。

【讨论】:

【参考方案2】:

转到 - chrome://flags 只需禁用这 3 个选项。它必须有效吗?

【讨论】:

【参考方案3】:

这让我发疯了好几个小时!然后我意识到:

    我最近使用HTTPS://localhost,并设置了一个同名的cookie。

    这就是 HTTP://localhost 无法设置 cookie 的原因

    所以我去了 https,清除了 devtools 中“应用程序”选项卡中的 cookie,它开始使用 http 再次

【讨论】:

在我的 Set-Cookie 标头上删除“安全”标志后,我遇到了谷歌浏览器的这个问题:你为我节省了很多时间,谢谢! 这种情况每 6 个月左右发生一次,我总是忘记 这只是发生在我身上。谢谢!【参考方案4】:

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

SameSite 默认 cookie 启用删除 SameSite=None cookie 没有 SameSite 的 Cookie 必须是安全的

【讨论】:

【参考方案5】:

我通过转到 chrome://flags/ 然后搜索 cookie 解决了我的问题。将以下 3 个标志设置为禁用...

SameSite 默认 cookie 启用删除 SameSite=None cookie 没有 SameSite 的 Cookie 必须是安全的

【讨论】:

【参考方案6】:

对于我的情况,我正在使用 iisexpress (localhost:####) 运行 asp.net core razor pages 应用程序,但我在 Chrome 中遇到了这个问题。我的解决方法是确保 Properties\launchSettings.json 中的 iisSettings 对于 sslPort (44344) 的数字不是 0。将 sslPort 设置为 0,iisexpress 将不会运行将 ssl。将其更改为 44344,然后在 iisexpress 中使用 ssl 运行应用程序。或者,将 Visual Studio 中的项目属性和“调试”选项卡启用 SSL 将对 launchsettings.json 进行相同的更改,例如

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

【讨论】:

【参考方案7】:

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

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

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

【讨论】:

【参考方案8】:

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

【讨论】:

这对我在本地主机上运行起到了作用。我在其他参数上苦苦挣扎,但你的提示有效。谢谢! 还是不行。 Cookie 显示在网络下,但不会传播到 Chrome F12 中的应用程序/Cookie。【参考方案9】:

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

我最终尝试使用自定义 cookie 来确定 chrome 认为当前日期比实际日期早 - 例如,我放入了一个在今天(2 月 2 日)过期 1 年的 cookie -2017),实际上 chrome 将此 cookie 设置为 2017 年 1 月 1 日到期!这将解释为什么 2 周到期的 cookie 已被视为已过期,因为 chrome 正在将实际到期时间缩短 3 个月,因此认为它已过期。

Chrome 重启没有解决这个问题 - 我在这个阶段重启了电脑,这“修复”了这个错误。另外我应该注意到这仅发生在localhost - 似乎所有其他站点都可以。

【讨论】:

感谢我调试了 2 小时,试图缩小 cookie 大小和其他一些东西,但重新启动计算机解决了这个问题!【参考方案10】:

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

【讨论】:

【参考方案11】:

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

【讨论】:

【参考方案12】:

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

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

【讨论】:

【参考方案13】:

Cookies 是为二级及以下设计的。一级域将不起作用。相反,您应该使用地址http://127.0.0.1(如您所述),或者您可以编辑您的主机文件以将具有 TLD 的不同 URL 映射到地址 127.0.0.1,例如:

yoursite.tld   127.0.0.1

刚刚对此进行了进一步研究;找到了这个答案:Cookies on localhost with explicit domain

【讨论】:

是的,这就是我找到的那种“解决方案”,但仍然没有解释为什么其他 cookie 会起作用,比如我提到的 ASP.net 的。 ASP.NET 是“会话”cookie。 Chrome 为 localhost 存储“会话”cookie,但不存储“永久”cookie。要设置“会话”cookie,只需不要在 cookie 上设置过期日期(或明确将其设置为 DateTime.MinValue)。会话 cookie 实际上应该在每次浏览器关闭时被删除,但 Chrome/Firefox 具有“从上次中断的地方继续”或“从上次打开我的标签页”之类的功能,实际上会导致浏览器无限期地挂在“会话”cookie 上而不是删除它们。安全漏洞,哈哈。

以上是关于Chrome localhost cookie 未设置的主要内容,如果未能解决你的问题,请参考以下文章

cookie 未显示在 chrome 开发者工具中

在 chrome 中未删除会话 cookie 的解决方法

JWT:未直接访问服务器(localhost:3001/login)时未设置 Cookie(MERN)

关闭会话时未删除移动浏览器(chrome、safari)cookie

Chrome 上未设置第三方 cookie(Django 应用程序)

Cookie 未出现在 Chrome 控制台资源选项卡中