【发布时间】:2021-01-16 03:54:31
【问题描述】:
我读过其他类似的帖子,错误信息完全相同,但我的问题不同。
我在 https://XXXXXXXX.execute-api.us-east-1.amazonaws.com/xxxx/users 中有一个 AWS ApiGateway(从现在起我将其称为 /users)。
我已经使用 Cognito 授权实现了我的 ApiGateway 到 Lambda 脚本,它们可以正常工作,例如:
-
/users/me-> 返回当前登录用户的数据
问题是当我在 ApiGateway 中调用一个不存在的路由时,例如:
-
/users/mine123-> 它返回
{ "消息": “'my-cognito-user-id-token' 不是 授权标头中的有效键=值对(缺少等号): '承载者我的认知用户 ID 令牌'。” }
我的问题是...... 当 ApiGateway 中的路由不存在时,有没有办法返回 NotFound 或 BadRequest 错误?
我认为有可能实现资源 ANY,但是,有没有一种“干净”的方法可以在没有资源 ANY 的情况下实现它?
编辑 1:
我也尝试了 Api Gateway 响应。我为 Resource Not Found 设置了一个自定义响应,状态错误代码 404 但 Api Gateway 仍然返回 403 Forbidden。
编辑 2
我也已经配置了 4XX 响应:
并且 API Gateway 总是返回 403 错误以及此消息(正如一般 4XX 错误所预期的那样),但是我认为这没有意义,因为它不是真正的 Forbidden 错误它是 NotFound 或 BadRequest错误。
例如,
- 对 Github API https://api.github.com/ROUTE_THAT_DOESNT_EXIST 中不存在的路由的请求返回
404 NotFound。 - 对 StackExchange API https://api.stackexchange.com/ROUTE_THAT_DOESNT_EXIST 中不存在的路由的请求返回
400 BadRequest。
他们都没有返回403 Forbidden。
【问题讨论】: