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

跨域场景下Express res.cookie设置的Cookie在Chrome不生效

问题根因与修复方案

你遇到的Cookie无法写入问题由两个配置错误共同导致,按以下步骤修改即可解决:

核心问题点

  • 跨站域名触发SameSite拦截:你的前端页面运行在http://127.0.0.1:5500,但fetch请求写的是http://localhost:3003。别觉得这俩都指向本地就是同域——在浏览器的同源判定、SameSite Cookie规则里,127.0.0.1和localhost是完全独立的两个域名,属于跨站请求。你配置的sameSite: "lax"本来就禁止跨站场景下写入Cookie,浏览器直接拦截存储逻辑完全符合规则。
  • 过期时间单位写错:Express的res.cookie里maxAge单位是毫秒,你写的maxAge: 3600只代表Cookie存活3.6秒,就算侥幸写入了也会马上过期,根本留不住。

修复操作

  1. 统一域名,绝对不要混用localhost和127.0.0.1,二选一即可:
  • 选localhost的话:前端页面用http://localhost:5500访问,把CORS配置里的origin改成http://localhost:5500,fetch地址保持http://localhost:3003不变
  • 选127.0.0.1的话:把fetch里的请求地址改成http://127.0.0.1:3003,CORS配置保持现有值不变
  1. 调整Cookie有效期:如果要让Cookie存活1小时,把maxAge的值改成3600 * 1000(秒转毫秒)
  2. 改完重启Express服务,清掉浏览器里对应站点的缓存再发请求,就能在Application面板看到正常写入的access_token了。

附问题复现参考截图

  • 响应头正常返回Set-Cookie:
    响应头已设置Cookie
  • 修复前Application面板无Cookie记录:
    Application面板Cookie为空

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 15:36:25