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

ExpressJS无法获取Refresh Cookie问题排查(React+Node.js)

本地开发环境下无法获取httpOnly的Refresh Token Cookie问题解决

问题场景

本地开发环境中(Node.js服务运行在localhost:5000),登录接口已成功生成并通过httpOnly Cookie返回Refresh Token,但调用刷新接口时始终无法获取到该Cookie,仅能看到Google Analytics相关的Cookie:

  • _ga: 'xxxxxxxxxxxxxxxxx',
  • _gid: 'xxxxxxxxxxxxxxxx',
  • _gat_gtag_UA_xxxxxx: 'x',
  • _ga_QPY49S2WC4: 'xxxxxxxxxxxxxxxxxxx'

登录接口核心代码:

const payload = {name, email};
console.log("payload: ", payload);
const accessToken = jsonwebtoken.sign(payload, process.env.ACCESS_TOKEN_KEY, { expiresIn: '15m' });
const refreshToken = jsonwebtoken.sign(payload, process.env.REFRESH_TOKEN_KEY, { expiresIn: '1d' });
console.log("Access  Token:", accessToken);   // access token is generated
console.log("Refresh Token:", refreshToken);  // refresh token is generated
res.cookie('refreshToken', refreshToken, { httpOnly: true, secure: false, sameSite: 'Lax', maxAge: 24*60*60*1000 }); // call succeeded. what is the name of cookie?
res.json({ accessToken });

刷新接口核心代码:

export const handleRefreshToken = async (req, res) => {
console.log("Request Cookies", req.cookies);
const cookies = req.cookies;
if (!cookies?.refreshToken) return res.sendStatus(401);

排查过程

通过浏览器开发者工具的Network面板查看登录接口的响应,能看到refreshToken Cookie确实存在,但浏览器的Cookie列表中未显示该Cookie,说明Cookie未被浏览器持久化保存。

解决方案

客户端使用Axios发起请求时,必须添加{ withCredentials: true }配置,确保浏览器在请求时自动附带Cookie(即使是同域场景下,部分请求模式也需要显式开启该配置)。

示例Axios请求代码:

axios.post('/api/refresh-token', {}, { withCredentials: true })
  .then(response => {
    // 处理响应逻辑
  })
  .catch(error => {
    // 处理错误逻辑
  });

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 18:15:40