0

我的服务器运行 node.js/Express 的系统日期不正确,充当 Web 服务器。服务器将位于客户位置,可能无法访问时间服务器,因此我不得不假设系统日期可能不正确。我的问题是 cookie 过期。在我的 Node 程序中,我将过期时间设置为 15 分钟,如下所示:

  app.use(express.session({ cookie: { path: '/', httpOnly: true, maxAge: (1000*60*15]) }, secret: 'secret' }));

cookie 过期日期设置为未来 15 分钟,基于客户端计算机在 Firefox 和 Chrome 中的时间,但基于服务器在 IE 10 中的错误时间。

例如:

如果当前本地日期是 2013 年 11 月 4 日星期一 10:30:00,而服务器时间不正确是 2012 年 5 月 21 日星期一 06:30:00,我的 cookie 的过期日期设置为 2013 年 11 月 4 日星期一 10:45:在 Firefox 和 Chrome 上为 00,但在 IE 10 中为 2012 年 5 月 21 日星期一 06:45:00。所以我的节点服务器认为 IE 中的 cookie 已过期,因此我无法登录。

如何根据客户端机器的时间使 IE 的 cookie 在未来 15 分钟过期?

4

1 回答 1

1

除非它已更改(我不知道它已更改),否则 IE 不支持max-age,您必须expires改用(参考)。

如果您的服务器时间“关闭”,您可能需要将客户端的时间发送到服务器(这当然会受到欺骗),和/或添加第二层行为,该行为也根据服务器时间检查经过的时间(不管 cookie 是否存在),可能会在 cookie 中发送值。

于 2013-11-04T20:17:28.867 回答