我有一个ASP.net应用程序,它使用cookie来存储用户选择的语言。 一切正常,除非我在localhost上。 用127.0.0.1替换localhost使它再次工作......为什么?
我看到了对file://的预期限制,但我实际上找不到对localhost的预期限制的任何引用。
我无法理解为什么ASP.net会话(ASP.NET_SessionId)和ASP.net表单身份验证Cookie(.FSAUTHSSO)是为localhost域正确设置的,但我的cookie不是......为什么?!
我已经搜索过很多内容并且无效:
那有什么关系? :)
为什么要设置ASP.net cookie而我的不是?有什么区别?
最后一件事就是提到这也发生在IE上但在FF上工作正常。
谢谢!
亚历
答案 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)
这让我疯了几个小时,然后我意识到:
我最近使用了 https: // localhost并设置了具有相同名称的cookie。
这是 http: // localhost无法设置cookie的原因
我去了 https ,清除了devtools中“应用程序”选项卡中的cookie,它再次开始与 http 一起使用
答案 4 :(得分:4)
我通过访问chrome:// flags /来解决我的问题,然后搜索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必须是安全的