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

使用JWT Token通过API Gateway调用始终返回未授权问题排查

问题分析与解决方案

你遇到的核心问题是API Gateway未正确转发authorization请求头,导致后端鉴权中间件检测不到该头信息,返回unauthorized access! no headers!错误。以下是具体排查和解决步骤:

1. 检查API Gateway集成请求的头映射配置

API Gateway默认不会自动转发自定义请求头,即便你在CORS配置中允许了该头,也需要在集成请求中明确配置映射规则:

  • 登录AWS控制台进入API Gateway,找到对应API和目标资源(如/fetch-general-news)
  • 切换至集成请求标签,定位到HTTP头区域
  • 添加一条映射规则:
    • 名称:填写authorization(与后端中间件读取的req.headers.authorization一致,Node.js会自动将请求头转为小写)
    • 映射值:输入method.request.header.authorization

2. 重新部署API到对应阶段

修改API Gateway配置后,必须重新部署到你的目标阶段(如prod、dev),否则新的头映射配置不会生效。部署操作可通过API Gateway控制台的部署API选项完成。

3. 验证前端请求头大小写(可选)

尽管HTTP协议规定请求头大小写不敏感,但部分场景下API Gateway对大小写有严格要求,可尝试将前端请求头的键改为大写:

const headers = {
   Accept: 'application/json',
   'Content-Type': 'multipart/form-data',
   Authorization: `JWT ${token}`, // 改为Authorization
};

4. 修复后端中间件笔误(非当前问题,但需注意)

你的中间件代码存在一处错误:catch块最后一行的res.res.json应改为res.json,否则会触发内部服务器错误:

// 原错误代码
res.res.json({ success: false, message: 'Internal server error!' });
// 修正后
res.json({ success: false, message: 'Internal server error!' });

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 00:31:02