【问题标题】:Why won't asp.net create cookies in localhost?为什么 asp.net 不在 localhost 中创建 cookie?
【发布时间】:2010-09-28 06:15:25
【问题描述】:

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

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

詹姆斯

【问题讨论】:

  • 你用什么来检查cookie是否存在?
  • 能否提供一个cookie创建部分的示例代码?
  • 这里确实需要示例代码。
  • @James,考虑标记正确答案。谢谢。

标签: cookies localhost


【解决方案1】:

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. 现在它适用于所有网站:

【讨论】:

  • 很棒的帖子,为什么没有选择这个作为答案?
  • 这绝对是答案。
  • 这是非常有用的信息,因为我想知道为什么我制作的 cookie 在调试会话之间被删除了
  • 那么 ASP.NET 会话如何为 localhost 工作?显然它正在为会话存储 cookie。我可以在我的 cookie 检查器中看到它们。将路径设置为“/”的技巧是什么?
  • 错误请求 - 无效的主机名
【解决方案2】:

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

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

去掉开发中的域属性,写入cookies:

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

【讨论】:

  • 太棒了,节省了我几个小时的研究时间。认为我的代码有问题。谢谢儿子
  • 这似乎是一种危险的做法。发布时容易忘记/错过。
  • @user158443 你不会在同一个配置中有这些行。我发布的 xml 是为了说明问题的可能原因,而不是对您的配置文件应该是什么样子的建议。至少你可以通过配置转换或类似的方式来处理这个问题。
  • 将 requireSSL 设置为“false”对我有用。
【解决方案3】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-17
    • 2011-12-29
    • 2023-04-11
    • 1970-01-01
    • 2018-11-26
    • 1970-01-01
    • 1970-01-01
    • 2014-11-07
    相关资源
    最近更新 更多