我通过Lambda集成设置了API网关,并遇到了这个问题。
请求URI:https://api-gateway-host/stage/hoge
hoge不是配置的路径,因此返回:
OK: missing authentication token
请求URI:https://api-gateway-host/stage/ho[ge
路径为ho“ [” ge。它也不是配置的路径,所以我希望得到相同的结果,但是:
/ho]ge
,/ho[]ge
,/ho[g]e
,/hoge[]
和/hoge[1]
中的所有返回相同的结果。
实际上,如果方括号放在/hoge?q=hoge[]
之类的“查询”中,则可以接受。
有人知道原因吗?它是Api网关的限制吗? 我认为它没有违反RFC。
环境
答案 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