46

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

但是,每当我尝试创建一个 cookie 时,它​​就永远不会被写出来?我已经在 FF3 和 IE7 中尝试过,但它根本不会写出 cookie。我不明白。我的主机文件中确实有“127.0.0.1 localhost”,我真的想不出我还能做什么。感谢您的任何建议。

詹姆士

4

3 回答 3

95

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(以点开头)。现代浏览器不再需要前导点,但您可能仍想使用以实现向后兼容性。

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

于 2010-04-26T14:31:38.387 回答
17

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

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

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

<!-- Development -->
<httpCookies httpOnlyCookies="true" requireSSL="false" />
<!-- Production -->
<!--<httpCookies domain=".domain.com" httpOnlyCookies="true" requireSSL="true" />-->
于 2014-05-28T18:03:34.073 回答
0

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

于 2008-12-23T22:21:47.553 回答