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

Express.js中设置的Cookie为何页面刷新后消失?

问题排查及解决方案

以下是几种可能导致localhost下Cookie刷新后消失的原因及对应解决办法:

  • JWT长度超标
    Cookie单条最大容量约4KB,要是你的JWT令牌太长(比如塞了太多不必要的字段),浏览器会直接拒绝存储这条Cookie,刷新自然就找不到了。
    解决:精简JWT的Claims,删掉没用的信息;或者换个方案——用HttpOnly Cookie存短的refresh_token,把access_token存在前端内存(比如Vuex、Redux)里,避开Cookie的大小限制。

  • 跨端口/跨域导致Cookie不共享
    如果前端和后端跑在localhost不同端口(比如前端3000,后端5000),浏览器会把它们当成不同源,默认Cookie不会跨端口共享。
    解决:

    • 设置Cookie时加上Domain=localhost,同时调整SameSite属性:同端口用SameSite=Lax就行;跨端口异步请求的话,要是用HTTPS就设SameSite=None; Secure,本地HTTP环境可以先去掉Secure,用SameSite=Lax,同时后端CORS要开credentials: true,前端请求也要带withCredentials: true(比如axios里配withCredentials: true)。
  • Cookie属性设置错误

    • 别瞎加Secure属性:localhost默认是HTTP协议,Secure只在HTTPS下生效,加了的话浏览器会直接忽略这条Cookie。
    • 注意Max-Age单位:Set-Cookie里的Max-Age是秒,你代码里的100000是对的,但别和res.cookie的毫秒单位搞混(res.cookie的maxAge是毫秒,注释里的那行是100秒后过期)。
  • 浏览器端的问题
    检查是不是开了隐私模式,或者浏览器设置了"关闭后清除Cookie",这种临时状态下Cookie存不住。另外打开开发者工具的Application -> Cookies,看看Cookie有没有真的被存进去——要是列表里没有,说明浏览器根本没接收这条Cookie。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 07:01:09