【问题标题】:How can I set a cookie's expiration in NodeJS?如何在 NodeJS 中设置 cookie 的过期时间?
【发布时间】:2011-11-14 12:00:22
【问题描述】:

我正在编写自己的 cookie,作为我使用 NodeJS 制作的网络服务器的一部分(即不使用任何包)。我已经能够使用类似的东西很好地做到这一点:

response.writeHead(200, {
  'Set-Cookie':'sesh=wakadoo'
});

但是,我想让我的 cookie 比现在更持久(也就是说根本没有)。我试过做这样的事情:

var curdate = new Date();
response.writeHead(200, {
   'Set-Cookie':'sesh=wakadoo; expires='+curdate.toUTCString()
});

但这似乎不起作用。 chrome 只是忽略了我设置的过期时间,firefox 从不加载页面。我目前的目标是简单地给我的 cookie 一个可以由浏览器解释的过期日期......有人知道怎么做吗?

最好的,
萨米人

【问题讨论】:

  • 我特别想在没有包的情况下做到这一点。如果我要使用一个包,它将是 cookie-node
  • 我申请你应该使用 express 或 connect 无论如何。所以只需使用cookieParser
  • 为什么我要为只需要其中一个功能的应用程序使用一个包含各种功能的包?如果我想使用一个包,我会使用一个专门为该功能制作的包(存在的东西)。不管怎样,这篇文章的重点是学习如何在没有包的情况下做到这一点——我想了解更多关于 nodeJS 的内部工作原理。
  • 如果你喜欢重新发明轮子并以艰难的方式做每一件事,那就去吧 o/

标签: cookies node.js setcookie


【解决方案1】:

尝试给过期时间一些提前期,比如一天。客户端/服务器可能无法读取它,因为它在您提交时已过期。

response.writeHead(200, {
    'Set-Cookie':'sesh=wakadoo; expires='+new Date(new Date().getTime()+86409000).toUTCString()
});

【讨论】:

  • 完美!这可能是 Mozilla 应该修复的错误...页面不应该挂断,因为 cookie 在同一天过期... chrome 只是将其视为非持久性 cookie。
  • 挂了?这有点奇怪。我为此写了一个快速测试。
  • 如果实现,去掉 JSON 末尾的分号 .toUTCString(); - 不需要标点符号
  • @eugene 已修复。谢谢。
  • +new Date(new Date().getTime()+86409000).toUTCString() 返回 NaN。应该没有 +
猜你喜欢
  • 1970-01-01
  • 2017-03-06
  • 1970-01-01
  • 2017-08-23
  • 1970-01-01
  • 2017-01-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多