Asp.net 未设置Chrome localhost cookie

Asp.net 未设置Chrome localhost cookie,asp.net,session,google-chrome,cookies,Asp.net,Session,Google Chrome,Cookies,我有一个ASP.net应用程序,它使用cookie存储用户选择的语言。 除了我在本地主机上,一切都正常。 将localhost替换为127.0.0.1使其再次工作。。。为什么? 我看到了对file://的预期限制,但实际上找不到对localhost的预期限制的任何引用 我真正无法理解的是,为什么为本地主机域正确设置了ASP.net会话(ASP.net_SessionId)和ASP.net表单身份验证cookie(.fsauthso),但我的cookie没有。。。为什么 我已经在谷歌上搜索了很多,

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

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

我真正无法理解的是,为什么为本地主机域正确设置了ASP.net会话(ASP.net_SessionId)和ASP.net表单身份验证cookie(.fsauthso),但我的cookie没有。。。为什么

我已经在谷歌上搜索了很多,但都没有效果:

  • 设置Chrome命令行标志--enable file cookies[不会 工作]
  • 将cookie设置为HttpOnly[没关系]
  • 正在将过期更改为会话或日期。。。[没关系]
  • 将Cookie路径更改为Root(/)或其他任何内容[无所谓]
那有什么关系呢?:)

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

最后要提到的是,这也发生在IE上,但在FF上效果很好

谢谢


Alex

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

yoursite.tld   127.0.0.1

只是进一步研究了这一点;找到了这个答案:

我在Chrome上也遇到了同样的问题。我吃了饼干。安全=正确。为localhost解决了这个问题


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

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

如果您显式地将域设置为“localhost”,您应该将其设置为
false
以使其工作或使用将域设置为
127.0.0.1

好消息。现在可以在Chrome启动Canary build时在localhost上设置Cookie:

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

最后,我尝试了定制cookie,以确定chrome认为当前日期比实际日期早-例如,我放入了一个cookie,该cookie在今天(2017年4月2日)过期1年,chrome将该cookie设置为2017年1月1日过期!这就解释了为什么一个过期2周的曲奇已经被认为过期了,因为chrome将实际过期时间缩短了3个月,因此认为它已经过期了


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

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

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

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

在我的情况下,我使用iisexpress(localhost:######)运行asp.net core razor pages应用程序,我在Chrome上遇到了这个问题。我的修复方法是确保Properties\launchSettings.json中的iisSettings对于sslPort(44344)的编号不是0。当sslPort设置为0时,iisexpress将不会运行ssl。将其更改为44344,然后在iisexpress中使用ssl运行应用程序。或者,在VisualStudio中运行项目属性并在调试选项卡中启用SSL将对launchsettings.json进行相同的更改

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

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

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

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

  • 因此,我转到了https,清除了devtools中“应用程序”选项卡中的cookie,它再次开始使用http


  • 我通过去学校解决了我的问题chrome://flags/ 然后搜索cookies。将以下3个标志设置为禁用

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

    要在Chrome browser>=79的本地计算机上运行此功能,请执行以下步骤。 我通过去学校解决了我的问题chrome://flags/ 然后搜索cookies。将以下3个标志设置为禁用

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

    转到-chrome://flags 只需禁用这3个选项。它必须起作用


    选项->引擎盖下->隐私->内容设置中有哪些cookie设置?或者您是否有任何应用于localhost的例外情况?我没有涉及Google Chrome设置。您正在询问的设置为:Cookies:允许设置本地数据(推荐)。我也没有例外。。。没有触及任何默认设置…4年后,2015年仍然如此。由于本地主机服务器通常在不同的端口下运行,我应该提到,您可以尝试使用主机名而不使用显式端口设置cookie的url。例如,而不是
    cookie.url='127.0.0.1:3001'
    ,您可以尝试
    cookie.url='127.0.0.1'。这样做对我有用。请参阅此处了解更多信息:尝试cookie.url='';让浏览器决定是的,这是我在各地找到的那种“解决方案”,但仍然没有解释为什么其他cookie可以工作,比如我提到的ASP.net cookies。ASP.net cookies是“会话”cookies。