当方括号(“[”,“]”)位于路径中时,AWS API 网关返回 400 错误

ksj*_*ksj 2 amazon-web-services aws-api-gateway

我使用 Lambda Integration 设置 API 网关并遇到了这个问题。

好的案例

请求URI:https://api-gateway-host/stage/hoge

hoge 不是配置的路径,因此返回:

正常:缺少身份验证令牌

不合格案例

请求URI:https://api-gateway-host/stage/ho[ge

路径是ho"["ge。它也不是配置的路径,所以我期望相同的结果,但是:

异常:400

/ho]ge/ho[]ge/ho[g]e/hoge[]和都/hoge[1]返回相同的结果。实际上,如果方括号是在“查询”中,例如/hoge?q=hoge[],它是可以接受的。

有谁知道原因吗?这是Api网关的限制吗?我认为这并不违反RFC。

环境

  • AWS us-east-1
  • 使用空 lambda 函数的 Lambda 代理的基本设置
  • 没有请求验证(我启用了请求验证,但结果是相同的)
  • 浏览器是Google Chrome(与Curl相同)

nin*_*nge 10

实际上,API 网关 URL 中不允许使用方括号。这是服务的限制,不符合RFC 标准。

要解决此限制,您可以对方括号进行编码,如本线程中详述。