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

为什么Node.js服务端可向Postman发送Cookie但本地React应用接收不到

跨域场景Cookie不生效解决方案

这个问题属于跨域请求下Cookie传递的典型配置缺失,Postman默认不限制跨域Cookie所以运行正常,浏览器遵循同源策略需要做两处配置修改:

1. 调整Node.js后端配置

修改CORS配置

原有默认CORS配置不允许跨域携带凭证,替换app.use(cors())为以下代码:

app.use(cors({
  // 填写前端实际运行地址,本地开发一般是http://localhost:前端端口,生产环境替换为正式前端域名
  origin: "http://localhost:3001", 
  credentials: true // 允许跨域请求携带Cookie
}));

注意:origin参数不能使用通配符*,否则credentials配置会失效。

调整Cookie配置(可选,适配不同环境)

本地开发环境为http协议时,不要开启secure: true,该配置要求Cookie仅能在https协议下传输,http环境开启会导致Cookie被浏览器直接拒收。生产环境如果前后端跨域部署,还需要补充sameSite: none配置:

if (process.env.NODE_ENV === "production") {
  cookieOptions.secure = true;
  cookieOptions.sameSite = "none";
}

2. 调整React前端axios请求配置

axios默认不会在跨域请求中携带Cookie,需要在请求参数中新增withCredentials: true:

axios({ 
  method: "POST", 
  url: url, 
  data: data, 
  headers: header,
  withCredentials: true // 新增该行配置
})

如果有全局axios实例,也可以统一配置:

axios.defaults.withCredentials = true;

修改完成后重启前后端服务即可生效,可通过浏览器开发者工具「Application」面板的Cookie栏目验证jwt Cookie是否正常写入。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 14:24:03