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

生产环境出现No Token Found/Provided错误,本地正常求助

React+Node.js 生产环境认证 Token 丢失问题排查方案

1. 跨域请求凭证配置检查

  • 前端必须显式开启请求携带凭证:
    全局Axios配置:
    axios.defaults.withCredentials = true;
    
    或单个请求配置:
    axios.post('/api/auth/login', loginData, { withCredentials: true });
    
  • 后端CORS不能用通配符*作为origin,必须指定生产环境具体域名,同时开启凭证允许:
    app.use(cors({
      origin: 'https://your-prod-domain.com', // 替换为实际生产域名
      credentials: true
    }));
    
  • SameSite 配置:生产环境若为同站部署设为'Lax',跨站部署设为'None'(但'None'必须配合secure: true),避免浏览器拦截Cookie:
    res.cookie('token', jwtToken, {
      httpOnly: true,
      secure: process.env.NODE_ENV === 'production',
      sameSite: process.env.NODE_ENV === 'production' ? 'Lax' : 'Strict',
      maxAge: 86400000,
      domain: '.your-prod-domain.com' // 主域统一配置,覆盖所有子域
    });
    
  • 确认Domain属性无多余前缀/后缀,比如主域是example.com,子域部署时设为.example.com即可。

3. Token 提取逻辑验证

检查后端authMiddleware是否同时支持Cookie和请求头两种提取方式,避免仅从请求头读取:

// authMiddleware.js 正确逻辑示例
const token = req.cookies.token || req.headers.authorization?.split(' ')[1];
if (!token) {
  return res.status(401).json({ message: 'No token found or no token provided' });
}

如果生产环境用HTTPS,必须开启secure: true,现代浏览器会拒绝在HTTPS环境下保存非secure标记的Cookie;若为HTTP环境(不建议生产使用),则secure必须设为false。

5. 前端请求时机与路由检查

  • 避免页面跳转过早导致Cookie未完成存储就发起请求,确保认证接口响应完成后再进行路由跳转。
  • 单页应用路由切换后发起的API请求,确认withCredentials配置未被覆盖。

6. 浏览器调试定位

生产环境打开开发者工具:

  • 进入Application -> Cookies,检查token Cookie是否存在,核对domain、secure、sameSite属性是否符合配置。
  • 查看Network面板,确认请求头包含Cookie字段,后端响应头的Set-Cookie是否正确返回。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 17:02:36