【问题标题】:InvalidQueryStringException on AWS_IAM secured API Gateway Lambda ProxyAWS_IAM 安全 API Gateway Lambda 代理上的 InvalidQueryStringException
【发布时间】:2019-04-21 14:55:53
【问题描述】:

我正在使用无服务器将 GET 参数传递给 AWS API Gateway 资源端点 (LAMBDA_PROXY)。

GET 参数在数组注释中,例如。 ?filter[someKey]=someValue,参数正确传递给事件对象中的handler。

只要我尝试将授权方应用于同一端点(授权方:AWS_IAM)并使用 Postman 发送具有相同 GET 请求参数的正确授权信息(AccesKey、SecretKey、SessionToken),我就会收到以下信息回复: 状态码: 400 Bad Request 标题: x-amzn-ErrorType InvalidQueryStringException 身体: {"message":null}

我在 AWS 中找不到有关 InvalidQueryStringException 的任何有用信息。

为什么 GET 请求参数在没有 AWS_IAM 授权方的情况下正确传递给处理程序,但在 AWS_IAM 到位时被拒绝?

感谢您对此的见解。

【问题讨论】:

  • PS:通过 AWS 控制台使用相同的查询字符串测试资源端点 API 网关会产生正确的响应...
  • 您能确认一下您的查询字符串吗(值不如键重要)?

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


【解决方案1】:

似乎,“百分比编码”方括号是一种绕过 AWS API Gateway 不支持方括号作为查询字符串一部分的限制的方法,这确实有点奇怪。

所以只需“百分比编码”查询字符串的方括号:?filter[someKey]=someValue?filter%5BsomeKey%5D=someValue 确实有帮助。

此外,编码整个查询字符串部分没有成功(500,内部服务器错误),因此您很可能最终只编码方括号。

Stackoverflow: AWS API gateway returns 400 error when square bracket (“[”, “]”) is in path Ask

【讨论】:

    猜你喜欢
    • 2018-09-21
    • 2019-05-19
    • 2021-09-11
    • 2021-08-14
    • 1970-01-01
    • 2017-12-15
    • 2018-01-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多