我正在尝试设置一个有效期为3个月的cookie。我可以将Cookie设置为正常,但设置的有效期无效。

我已经在需要的时候使用了momentJS创建一个日期对象。从控制台输出了正确的时间,但cookie的值不正确,它的值是在几分钟之内到期,而不是从日期算起的3个月。

// Create the date the cookies will expire on
var cookieDate = moment().add(6, 'months').toDate();
console.log(cookieDate);
res.cookie('username', user.username, { expires: cookieDate });

我浏览了文档,它只是要求将Date对象传递给它。

我还查看了stackoverflow,唯一能找到的就是this,它告诉OP使用req.session.cookie,这似乎不正确,因为您应该在响应客户端而不是在 session 中设置cookie 。

最佳答案

我通过反复试验发现,moment.toDate()创建的日期对象可能是Express并未接受的有效Date对象。

以下代码修复了该错误:

var cookieDate = new Date(moment().add(6, 'months').toDate());
res.cookie('username', user.username, { expires: cookieDate });

关于javascript - 使用moment.toDate()时,Express 4.13.4中将忽略cookie的到期日期,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36899310/

10-13 08:47