使用Curl向AWS Lambda端点传递Bearer授权头失败排查
解决curl请求Lambda端点时的Bearer授权令牌问题
Hey,我来帮你捋捋这几个curl请求的问题,以及正确的修复方式:
逐个分析你的尝试错误
- 尝试1:问题出在你的令牌包含空格,而shell会把空格当作参数分隔符,导致
Authorization头被拆成了多个零散的部分,服务端自然无法正确解析。你需要把整个头信息用引号括起来,让shell把它当成一个完整的参数传递。 - 尝试2:你写错了认证头的字段名!标准的Bearer认证头是
Authorization,而不是Authentication,服务端找不到正确的认证字段,所以提示“缺失认证令牌”。 - 尝试3:Bearer令牌的格式是
Bearer <令牌内容>,不需要额外加=或者Token字样,你完全搞错了认证头的规范格式。
正确的curl命令写法
你只需要把包含空格的Authorization头用双引号(或单引号)完整包裹起来,确保令牌作为一个整体被传递:
curl -H "Accept: application/json" -H "Authorization: Bearer this is my secret string token" https://myurl.execute-api.us-east-1.amazonaws.com/beta/lambdaip
如果你的令牌里包含单引号这类特殊字符,改用单引号包裹头内容会更稳妥:
curl -H 'Accept: application/json' -H 'Authorization: Bearer this is my secret string token' https://myurl.execute-api.us-east-1.amazonaws.com/beta/lambdaip
另外补充:如果你的Lambda端点要求用POST方法,记得加上-X POST参数,但从你的错误信息来看,即使是GET请求也能触发认证校验,所以先确保头格式正确就可以解决核心问题啦。
内容的提问来源于stack exchange,提问作者Rilcon42




