You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Express中读取Cookie的过期时间?

如何读取Cookie的过期时间

首先得明确:浏览器不会把Cookie的过期时间随请求发送给服务器,所以req.cookies(包括cookie-parser)根本拿不到这个信息——过期时间是浏览器本地维护的属性,用来判断是否要删除Cookie,不会出现在HTTP请求的Cookie头里。

给你两个可行的解决方案:

方案1:额外设置一个存过期时间的Cookie

把过期时间单独存在另一个Cookie里,和原Cookie保持相同的过期规则:

const expireDate = dayjs().add(1, "hour").toDate();
// 设置token的Cookie
res.cookie("tokenCookie", token, {
  secure: false,
  httpOnly: true,
  expires: expireDate,
});
// 同时设置存过期时间的Cookie
res.cookie("tokenExpires", expireDate.getTime(), {
  secure: false,
  httpOnly: true,
  expires: expireDate,
});

读取的时候直接从req.cookies里取:

const expireTimestamp = req.cookies.tokenExpires;
const expireDate = new Date(parseInt(expireTimestamp));

方案2:把过期时间编码到Token里(如果用JWT)

如果你的token是JWT格式,直接把过期时间写入JWT的payload中,解析Token时就能拿到:

生成Token时:

const jwt = require('jsonwebtoken');
const expireSeconds = 3600; // 1小时
const token = jwt.sign(
  { 
    // 你的业务数据
    userId: 123 
  },
  'your-secret-key',
  { expiresIn: expireSeconds }
);

解析Token时:

try {
  const decoded = jwt.verify(req.cookies.tokenCookie, 'your-secret-key');
  // decoded.exp 是过期时间的时间戳(秒级),转成Date对象
  const expireDate = new Date(decoded.exp * 1000);
} catch (err) {
  // Token过期或无效的处理逻辑
}

内容的提问来源于stack exchange,提问作者JacobC

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 05:41:02