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

时间:2018-08-21 03:23:40

标签: amazon-web-services aws-api-gateway

我通过Lambda集成设置了API网关,并遇到了这个问题。

好的情况下

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

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

OK: missing authentication token

NG情况

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

路径为ho“ [” ge。它也不是配置的路径,所以我希望得到相同的结果,但是:

NG: 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相同)

2 个答案:

答案 0 :(得分:1)

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

要解决此限制,您可以对方括号进行编码,如in this thread所示。

答案 1 :(得分:0)

我对花括号有同样的问题,正如@ninge 的回答所提到的,这是一个没有记录的限制。管道和分号列在已知问题页面中: https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-known-issues.html

然而,关于 URL 的 RFC 说它们是不安全的字符,因为网关可能会改变它们解释它的方式。 https://tools.ietf.org/html/rfc1738#page-3