2011-09-08 158 views
40

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

我看到了文件的有意限制://但我实际上找不到任何对本地主机限制的引用。

我真的不明白为什么ASP.net会话(ASP.NET_SessionId)和ASP.net窗体身份验证Cookie(.FSAUTHSSO)正确设置为本地域名,但我的Cookie不是...为什么?!

我已经用Google搜索了很多,没有什么作品:

  • 在Chrome命令行标志--enable-文件饼干[不 WORK]
  • 设置Cookie设置为仅Http [不事项]
  • 更改过期到会话或一个日期...... [没关系]
  • 更改cookie路径为根(/)或到别的[没关系]

那么重要的是什么? :)

为什么可以设置ASP.net cookie而我的不是?有什么不同?

最后要说的是,这也发生在IE上,但在FF上正常工作。

谢谢!

亚历克斯

+0

什么是“选项 - >胡德 - >隐私 - >内容设置”中的cookie设置?或者你有没有任何异常应用到本地主机? –

+0

我还没有碰过Google Chrome设置。您要求的那个设置为:Cookie:允许设置本地数据(推荐)。 我也没有例外设置...没有触及任何默认设置... – AlexCode

+3

4年后,今年是2015年,这仍然[是一个问题](http://stackoverflow.com/questions/ 28583729 /铬犯规 - 组 - cookie的从响应)。 – Gaui

回答

24

饼干是专为二级和低级。一级域名将无法使用。相反,你应该使用地址http://127.0.0.1(如你所提到的),或者你可以编辑您的主机文件映射到不同的URL与TLD的地址为127.0.0.1,如:

yoursite.tld 127.0.0.1 

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

+5

是的,这是我发现的一种“解决方案”,但仍然没有解释为什么其他cookie会起作用,就像我提到的ASP.net那样。 – AlexCode

+0

ASP.NET的是“会话”cookie。 Chrome为localhost存储“会话”cookie,但不存储“永久”cookie。要设置“会话”cookie,只需不要在cookie上设置过期日期(或明确将其设置为DateTime.MinValue)。会话cookie实际上应该在每次浏览器关闭时被删除,但Chrome/Firefox具有“继续我离开的位置”或“从上次打开我的标签”等功能,实际上会导致浏览器无限期地挂在“会话”Cookie上而不是删除它们。安全孔,哈哈。 – Triynko

1

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

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

19

,请尽量把cookie.Domain = null在本地主机上,并以其他方式使用该域名。

+0

这让我在localhost上运行的技巧。我正在努力与其他参数,但你的小费的作品。谢谢! – elvin

0

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

1

我曾在那里与2周以后的过期饼干没有被设置在浏览器的问题 - 这正好是权威性的cookie( .AspNet.ApplicationCookie),所以我不断被重定向回登录页面。这个问题在我尝试过的其他浏览器中没有发生。

我结束了自定义Cookie试验,以确定铬认为当前日期是比实际情况 - 因此,例如,我将在今天(2月 - 2017年)1年内到期一块饼干实际上,Chrome设置此Cookie将于2017年1月1日到期!这就解释了为什么一个2周到期的曲奇已经被认为已经过期了,因为铬是在实际到期的3个月期间掉下来的,因此认为它已经过期。

Chrome重新启动并没有解决这个问题 - 我在这个阶段重新启动了电脑,这个“固定”错误。另外我应该注意到这只发生在localhost - 看起来其他所有网站都没问题。

+0

谢谢我调试了2h试图缩小cookie大小和其他一些东西,但重新启动计算机解决了问题! – Peter

1

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

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

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

+0

完全一样的问题,但我解决后发现这个:) – endo64