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

本地Express调用AWS API Gateway报Missing Authentication Token,Postman可正常访问

问题排查与解决方案

1. 修复代码中的语法错误

你的代码里URL拼接存在多余的闭合大括号}:

// 错误写法
await needle('post', `${API_BASE_URL}/users}`)
// 正确写法
await needle('post', `${API_BASE_URL}/users`)

虽然你提到控制台打印的URL正常,但先确认这个笔误是否存在,避免路径不匹配导致的认证错误。

2. 检查API Gateway的认证配置

情况一:API启用了API Key认证

如果你的AWS API Gateway要求携带x-api-key请求头,Postman可能已经配置了该头,但你的Express代码里没有添加。修改needle请求,加入认证头:

const apiRes = await needle('post', `${API_BASE_URL}/users`, {}, {
  headers: {
    'x-api-key': '你的API Gateway密钥',
    'Content-Type': 'application/json' // 按需添加,部分API要求指定内容类型
  }
})

情况二:API启用了IAM认证

如果API使用IAM身份验证,Postman可能配置了AWS签名,但代码里未做签名处理。可以使用aws4库给请求签名:

  1. 安装依赖:
npm install aws4
  1. 修改请求代码:
const aws4 = require('aws4');

// 配置请求参数
const requestOpts = {
  host: '你的API Gateway域名(比如xxxx.execute-api.us-east-1.amazonaws.com)',
  path: '/你的阶段名/users', // 比如/dev/users
  method: 'POST',
  headers: { 'Content-Type': 'application/json' }
};

// 用AWS凭证签名
aws4.sign(requestOpts, {
  accessKeyId: '你的AWS访问密钥ID',
  secretAccessKey: '你的AWS秘密访问密钥'
});

// 发送签名后的请求
const apiRes = await needle('post', `${API_BASE_URL}/users`, {}, requestOpts);

3. 验证API Gateway部署状态

确认你的API已经部署到对应的阶段,并且请求的路径、HTTP方法与API Gateway中的配置完全一致。如果修改API后未重新部署,旧的配置会导致请求失败。

4. 修复catch块的错误

你的代码catch块中error变量未定义,会导致额外的错误:

// 错误写法
res.status(500).json({error})
// 正确写法
res.status(500).json({ error: e.message || '请求失败' })

内容的提问来源于stack exchange,提问作者Wesley van S

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 03:50:41