包含特殊字符 (`<>^|`) 的 URL 被 api 网关阻止,永远不会到达 lambda
URLs containing special characters (`<>^|`) blocked by api gateway, never makes it to lambda
如何获取包含任何这些特殊字符 <>^|
的 url 请求,使其到达 api 网关后面的 lambda,而不是在 api 网关被阻止?
问题:我们有一个由 api 网关触发的 lambda,并且 lambda 可以正常响应大多数请求。但是,带有某些特殊字符的 url (<>^|
) returns a 400 bad_request
从未被传递给 lambda。当在 url 中使用 url 编码的替代方案(即 %7C
代替 |
)时,lambda 响应没有问题。
起初,我们的团队假设包含这些特殊字符的请求,特别是竖线 (|
),被 AWS WAF 阻止了。但是 WAF 图表没有记录请求曾经命中,导致我们认为这可能是一个 api 网关问题。
已尝试的内容:运行 同一个 curl 针对已部署的服务器请求 10 次。其中九次,在 url 端点中使用了特殊字符,第十次,使用了等效的编码。
编码尝试已通过,lambda 响应没有问题。所有其他九次尝试均失败,并且未显示在 AWS 控制台或 WAF 图表中。
除了通知我们的用户始终将 url 正文中的这些特殊字符编码为 'fix' 之外,非常感谢任何对此 api 网关问题的见解。谢谢。
并非所有字符都受支持。来自 docs:
Path segments can only contain alphanumeric characters, hyphens, periods, commas, colons, and curly braces. Path parameters must be separate path segments.
如何获取包含任何这些特殊字符 <>^|
的 url 请求,使其到达 api 网关后面的 lambda,而不是在 api 网关被阻止?
问题:我们有一个由 api 网关触发的 lambda,并且 lambda 可以正常响应大多数请求。但是,带有某些特殊字符的 url (<>^|
) returns a 400 bad_request
从未被传递给 lambda。当在 url 中使用 url 编码的替代方案(即 %7C
代替 |
)时,lambda 响应没有问题。
起初,我们的团队假设包含这些特殊字符的请求,特别是竖线 (|
),被 AWS WAF 阻止了。但是 WAF 图表没有记录请求曾经命中,导致我们认为这可能是一个 api 网关问题。
已尝试的内容:运行 同一个 curl 针对已部署的服务器请求 10 次。其中九次,在 url 端点中使用了特殊字符,第十次,使用了等效的编码。
编码尝试已通过,lambda 响应没有问题。所有其他九次尝试均失败,并且未显示在 AWS 控制台或 WAF 图表中。
除了通知我们的用户始终将 url 正文中的这些特殊字符编码为 'fix' 之外,非常感谢任何对此 api 网关问题的见解。谢谢。
并非所有字符都受支持。来自 docs:
Path segments can only contain alphanumeric characters, hyphens, periods, commas, colons, and curly braces. Path parameters must be separate path segments.