为什么asp.net不会在localhost中创建cookie?

时间:2008-12-23 22:15:57

标签: cookies localhost

好的,这真的有点开始让我烦恼。我有一个简单的Web项目设置位于:“C:\ Projects \ MyTestProject \”。在我的机器上的IIS中,我已经将虚拟目录映射到此位置,因此我可以在本地运行我的站点(我知道我可以从Visual Studio运行它,我更喜欢这种方法)。我将此虚拟目录命名为“mtp”,然后通过http://localhost/mtp/index.aspx访问它。这一切都很好。

但是,每当我尝试创建一个cookie时,它根本就不会被写出来?我在FF3和IE7中试过这个,它只是简单的不会写出cookie。我不明白。我的主机文件中有“127.0.0.1 localhost”,我真的想不出我能做的其他事情。谢谢你的任何建议。

詹姆斯

3 个答案:

答案 0 :(得分:89)

Cookie规范需要两个名称和一个点,因此您的cookiedomain不能是“localhost”。这就是我解决它的方法:

  1. 将其添加到%WINDIR%\ System32 \ drivers \ etc \ hosts文件中: 127.0.0.1 dev.livesite.com

  2. 开发时使用http://dev.livesite.com代替http://localhost

  3. 创建Cookie时,使用“.livesite.com”作为cookiedomain(开头有一个点)。 现代浏览器doesn't require a leading dot anymore,但您可能仍希望使用它来实现向后兼容性。

  4. 现在它适用于所有网站:

答案 1 :(得分:13)

由于从未选择过答案,我想我仍然可以在那里抛出其他东西。

使用在localhost下运行的应用程序编写的cookie不会遇到的一个原因是web.config中的httpCookies设置。如果域属性设置为特定域并且您在localhost下运行,则不会为我编写cookie。

删除开发中的域属性并编写cookie:

<!-- Development -->
<httpCookies httpOnlyCookies="true" requireSSL="false" />
<!-- Production -->
<!--<httpCookies domain=".domain.com" httpOnlyCookies="true" requireSSL="true" />-->

答案 2 :(得分:-1)

您是否为Cookie分配了过期日期?默认情况下,cookie将在浏览器会话到期时到期,这意味着它不会向磁盘写入任何内容。