Express.js中Cookie随浏览器关闭失效问题:如何设置永久保留的Cookie
你遇到的情况是因为默认设置的Cookie是会话Cookie——这类Cookie不会存储在硬盘上,只在当前浏览器会话中有效,关闭浏览器就会被自动清除。要让Cookie持久保留,只需要在设置Cookie时指定过期时间即可,Express的res.cookie()方法支持两种配置方式:
方法1:使用expires设置具体过期日期
直接指定Cookie的过期时间点,比如设置Cookie7天后过期:
// 设置7天后过期的Cookie res.cookie("name", "value", { expires: new Date(Date.now() + 7 * 24 * 60 * 60 * 1000), // 计算7天后的时间戳 // 可选:增加安全配置 httpOnly: true, // 防止前端JS访问Cookie,提升安全性 // secure: true, // 仅在HTTPS环境下生效,本地开发HTTP时不要开启 });
方法2:使用maxAge设置存活时长
maxAge更直观,直接指定Cookie从设置时刻起的存活毫秒数,同样以7天为例:
// 设置存活7天的Cookie res.cookie("name", "value", { maxAge: 7 * 24 * 60 * 60 * 1000, // 7天的毫秒数 httpOnly: true, // secure: true, });
额外注意事项
maxAge和expires二选一即可,Express会自动处理两者的优先级(maxAge优先级更高)。- 如果需要Cookie长期有效,可以设置更长的时长,比如1年:
365 * 24 * 60 * 60 * 1000,但要注意浏览器对Cookie存储的限制(大部分浏览器支持最长有效期为1年)。 - 当在生产环境的HTTPS服务中使用时,建议开启
secure: true,确保Cookie只通过HTTPS传输,避免被窃取。
内容的提问来源于stack exchange,提问作者Azizul Hakim Ashik
相关产品推荐
相关产品推荐

