使用AWS API Gateway与Basic Authorizer的GET方法出现401 Unauthorized错误
排查AWS API Gateway GET方法401未授权(POST正常)的问题
以下是针对你遇到的GET请求未触发自定义Basic Authorizer Lambda、POST正常的排查方向:
确认授权器与GET方法的绑定关系
进入API Gateway控制台,找到对应的GET方法,检查「请求验证」->「授权」是否选择了你的自定义Basic Authorizer。有时候可能在配置时仅给POST方法绑定了授权器,漏了GET。检查API Gateway缓存设置
- 如果你的API阶段开启了API缓存,GET请求可能直接返回缓存的未授权响应,绕过授权器。可以临时关闭API缓存测试,看是否触发Lambda。
- 检查授权器的缓存设置:如果授权器开启了缓存,确认缓存键是否包含了Authorization头(默认应该是,但如果自定义了缓存键,可能遗漏)。不过POST正常的话这个概率较低,但可以排查。
验证GET请求的Authorization头传递
- 用curl或者Postman直接发送GET请求,携带正确的
Authorization: Basic <base64编码串>头,查看CloudWatch中Lambda的日志是否有触发记录。如果日志没更新,说明请求没带对Header,或者API Gateway没接收到。 - 跨域场景下,检查CORS配置:确保
Access-Control-Allow-Headers包含Authorization,否则浏览器在预检OPTIONS请求后,不会在实际GET请求中携带Authorization头,导致授权器没触发。
- 用curl或者Postman直接发送GET请求,携带正确的
查看API Gateway的执行日志
开启API Gateway的执行日志(在阶段设置的「日志/跟踪」里开启),查看GET请求的详细流程:是否到达授权器环节,还是在之前就被拒绝。如果日志显示请求未进入授权器,说明配置问题导致授权器未被调用。检查Lambda的触发权限
虽然POST正常,但确认API Gateway是否有调用Lambda的权限(GET方法对应的资源路径是否在Lambda的触发配置里)。不过POST正常的话这个可能性低,但可以快速核对Lambda的触发事件源是否包含该GET方法的API路径。排查请求拦截规则
检查是否有WAF规则、API Gateway请求验证规则(比如Header验证)拦截了GET请求的Authorization头,导致请求在到达授权器前就被拒绝。
内容的提问来源于stack exchange,提问作者Sma Ma
相关产品推荐
相关产品推荐

