Expo React Native中Axios请求无法获取Set-Cookie头问题求助
问题描述
向服务器发送POST请求后,响应里拿不到Set-Cookie头,但用Postman请求时能正常看到这个字段。
代码示例
axios.defaults.withCredentials = true; let config = { method: 'post', url: 'https://app.bhive.fund/v1/api/account/signin', headers: { 'Content-Type': 'application/json', }, data: form } const res = await axios(config) console.log(res.status) console.log('set-cookie: '); console.log(res.headers['set-cookie']); console.log(res.headers); return res;
现象对比
- 前端日志:
res.headers['set-cookie']输出为undefined,响应头里找不到Set-Cookie字段 - Postman:响应头中明确显示Set-Cookie字段
解决方案
- 让服务器暴露Set-Cookie头:浏览器默认只允许前端访问一批安全的响应头,Set-Cookie不在其中。必须让服务器在响应中添加
Access-Control-Expose-Headers: Set-Cookie,这样前端才能获取到这个字段。 - 确认跨域凭证配置:服务器得同时设置
Access-Control-Allow-Credentials: true,否则前端开启的withCredentials不会生效。你代码里已经开了这个配置,但要确保服务器那边也配对了。 - 检查Cookie的SameSite属性:如果Cookie的
SameSite设为Strict或Lax,跨域请求时浏览器可能会限制前端脚本访问该Cookie头。可以让服务器调整为SameSite=None; Secure(注意该配置需要HTTPS环境支持)。 - 排查浏览器安全限制:部分浏览器在隐私模式或特定安全策略下会隐藏Set-Cookie头,试试用常规模式测试,或者查看浏览器控制台是否有相关安全警告。
内容的提问来源于stack exchange,提问作者Anirudh Vasudev
相关产品推荐
相关产品推荐

