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

Axios请求时Node.js cookie-parser返回空对象问题求解

问题修复方案

你遇到的问题是浏览器跨域请求默认不携带凭证(Cookie等)导致的,Postman不受同源策略限制会自动携带Cookie,因此测试正常,浏览器环境需要额外配置前后端参数。

第一步:修改前端Axios请求配置

所有需要携带Cookie的Axios请求都需要开启withCredentials参数,你可以选择单次请求配置或者全局配置:

  • 单次请求配置(修改你当前的get请求代码):
useEffect(() => { 
        axios.get('http://localhost:5000/get-cookie', {
            withCredentials: true
        })
            .then(response => {
                console.log(response.data);
            })
            
    }, [])
  • 全局配置(在项目入口文件添加一行,后续所有请求自动携带凭证):
axios.defaults.withCredentials = true

注意:必须先调用/set-cookie/:id接口成功设置Cookie之后,再调用/get-cookie接口才能拿到对应值。

第二步:修改后端CORS配置

默认的CORS配置不支持跨域凭证请求,需要显式指定允许的前端源、开启凭证支持,不能使用通配符*作为origin值:
修改你后端app.js中的cors中间件配置:

// 替换原来的 app.use(cors());
app.use(cors({
  origin: 'http://localhost:3000', // 替换为你前端实际的访问地址,生产环境替换为对应域名
  credentials: true
}));

生产环境适配补充

如果部署到生产环境,需要确保前后端域名属于同一根域,同时设置Cookie时可以加上domain和sameSite参数适配浏览器安全策略:

res.cookie("User_ID",  req.params.id, {
  maxAge: 1000 * 60 * 60 * 24 * 31, 
  httpOnly: true,
  sameSite: 'lax',
  domain: '.yourdomain.com' // 替换为你的项目根域名
})

内容的提问来源于stack exchange,提问作者Lohith K.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 06:39:02