【问题标题】:API Gateway responds with 403 instead of 404API Gateway 响应 403 而不是 404
【发布时间】:2019-12-15 05:12:11
【问题描述】:

我在 API Gateway 中集成了 Lambda-Proxy; Lambda 有 2 个 GET API 和 1 个 POST API。
GET 定义为 /drive/service/lookup/v1/codes/drive/service/lookup/v1/codes/{code}

POST 是为

定义的
/v1/admin/apply

我为其中一个 GET API /drive/service/lookup/v1/codes 调用了 POST,但未实现; ExpressJs 在我的本地系统上提供 404。 当我使用 API Gateway 调用 POST 时,我得到 403 并显示以下消息

{ "message": "'JWT-Token' 不是有效的 key=value 对(缺失 授权标头中的等号):'Bearer JWT-Token'。” }

我在 API Gateway 上没有请求和响应设置(我有 Lambda-Proxy,而不是 Lambda 集成)

我想得到 404,这是一个有效的响应。 我有大 JWT 令牌,这条消息变得不可读。

【问题讨论】:

  • API网关定义中是否定义了POST资源?

标签: aws-api-gateway


【解决方案1】:

您尝试实现的内容通常由“405 Method Not Allowed”响应处理。由于安全原因,AWS 以 403 响应任何未定义和可访问的内容(例如,请参阅this 论坛主题)。您需要明确定义要在 API Gateway 中处理的所有方法。在您的情况下,您希望将“ANY”方法(见下文)添加到 /drive/service/lookup/v1/codes 资源并明确处理除 GET 之外的所有这些方法。一种方法是重定向到专门为此目的创建的 Lambda,并使用 404(或405,或您想要响应的任何代码)进行响应。您还可以重定向到应用程序中执行此操作的一段代码。引入变更后记得部署 API Gateway 才能生效!

【讨论】:

    【解决方案2】:

    我刚刚在这里回答了一个类似的问题:not a valid key=value pair (missing equal-sign) in Authorization header

    基本上,我必须添加@mjorosie 提到的任何方法处理程序,并将其指向一个刚刚返回 404 的自定义 Lambda 函数。另外,我必须添加一个资源代理处理程序,以便它可以捕获任何无效端点,并添加任何方法也可以。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-16
      • 1970-01-01
      • 2018-11-10
      • 1970-01-01
      • 2018-12-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多