AWS API Gateway调用Lambda遇Axios授权头错误:缺少等号的键值对
问题解决:AWS API Gateway调用Lambda授权头格式错误
核心原因
Lambda中配置的认证密钥校验逻辑,期望Authorization头是**key=value**的键值对格式,但你当前通过Axios传递的是Bearer {auth_token}格式,导致校验时因缺少等号报错。
修复步骤
1. 修正代码语法错误
你的requestData对象存在语法错误,赋值应该用冒号而非等号:
const requestData = { blah: 'blah' // 把=改成:,值建议用引号包裹 };
2. 适配授权头格式(二选一)
方案A:修改Axios请求头,匹配Lambda校验逻辑
如果要保留Lambda现有的校验规则,将Authorization头改为Lambda期望的键值对格式。比如Lambda校验的key是auth_token,则修改headers:
const headers = { 'Authorization': `auth_token=${authToken}`, // 替换成Lambda实际校验的key名 'Content-Type': 'application/json', };
方案B:修改Lambda认证逻辑,支持Bearer格式
如果想继续使用Bearer {token}的标准格式,在Lambda中解析授权头时先提取token:
// Lambda示例代码(Node.js) exports.handler = async (event) => { const authHeader = event.headers?.Authorization; if (!authHeader || !authHeader.startsWith('Bearer ')) { return { statusCode: 401, body: JSON.stringify({ message: 'Unauthorized' }) }; } // 提取Bearer后面的token const authToken = authHeader.split('Bearer ')[1].trim(); // 执行你的密钥校验逻辑 if (authToken !== '预期的密钥') { return { statusCode: 403, body: JSON.stringify({ message: 'Invalid token' }) }; } // 后续业务逻辑 return { statusCode: 200, body: JSON.stringify({ message: 'Success' }) }; };
验证
修改后重新调用Axios,检查CloudWatch日志确认授权头是否符合Lambda的校验要求,同时API Gateway测试功能可以继续用来对比验证。
内容的提问来源于stack exchange,提问作者craazii
相关产品推荐
相关产品推荐

