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

ReactJS与Django API项目中Cookie过期日期设置异常(显示1969年)求助

解决Cookie过期日期被设置为1969年的问题

我之前也踩过这个一模一样的坑!核心问题出在浏览器对document.cookie的expires参数格式要求上——它只认GMT格式的日期字符串,但你的Django后端返回的是ISO 8601格式的日期(比如"2018-04-29T17:00:00.000Z"),浏览器解析不了这种格式,就会默认把Cookie标记为已过期,也就是Unix纪元的前一秒(1969年12月31日)。

下面给你两种靠谱的解决办法:

方法一:把ISO日期转成GMT格式字符串

直接利用JavaScript的Date对象转换格式就行,步骤很简单:

  1. 把后端返回的ISO日期字符串转换成Date实例
  2. 用toUTCString()方法把日期转成GMT格式

修改后的代码如下:

// 从API响应中解构出token和expires
const { token, expires } = response;
// 转换日期为GMT格式
const gmtExpires = new Date(expires).toUTCString();
// 设置Cookie,建议加上path=/确保全站可用
document.cookie = `token=${token};expires=${gmtExpires};path=/`;

方法二:用max-age代替expires(更推荐)

max-age参数接受的是Cookie的有效时长(单位:秒),不需要处理复杂的日期格式,兼容性也很好。你可以直接计算出当前时间到过期时间的秒数:

const { token, expires } = response;
const expiresDate = new Date(expires);
// 计算剩余有效秒数,取整避免小数问题
const maxAge = Math.floor((expiresDate.getTime() - Date.now()) / 1000);
// 设置Cookie
document.cookie = `token=${token};max-age=${maxAge};path=/`;

设置完之后,你可以打开浏览器开发者工具(Application -> Cookies)检查一下,Cookie的过期时间应该就正常显示了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:33:07