AWS API 网关给出 400 错误请求错误

时间:2021-07-16 13:05:36

标签: node.js reactjs amazon-web-services aws-lambda aws-api-gateway

我正在使用 API 网关 + 基于 JWT 的授权来保护我的 AWS lambda 函数。我能够在我的 aws 控制台中为授权人获得正确的策略。我试图访问的 lambda 函数单独工作正常。当我将 GET_CUSTOMERS_URI 的授权更改为无并获取数据时,它工作正常。但是当使用 API 网关组合在一起时,它会给出 400 个错误的请求错误。我知道这与如何从前端发出请求有关,但我无法弄清楚。

我的获取请求看起来像这样[React app]:-

return await fetch(GET_CUSTOMERS_URI, {
  method: 'GET',
  mode: 'cors', 
  cache: 'no-cache', 
  credentials: 'same-origin', 
  headers: {
      'authorizationToken': 'Bearer ' + token,
      'Content-Type': 'application/json'
  },
  redirect: 'follow', // manual, *follow, error
  referrerPolicy: 'no-referrer',

})

授权方返回的策略(使用 AWS 控制台测试):-

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Action": "execute-api:Invoke",
      "Effect": "Allow",
      "Resource": "arn:aws:execute-api:us-west-2:<account id>:<api id>/<stage-name>/GET/customers"
    }
  ]
}

1 个答案:

答案 0 :(得分:0)

事实证明这是一个 CORS 错误。我通过以下方式解决了这个问题:-

  1. 在 API 网关中选择一个端点。
  2. 点击Actions -> Enable CORS
  3. Access-Control-Allow-Headers 字段设置为以逗号分隔的所有值,您将作为前端的标头传递
  4. 点击Enable CORS and replace existing CORS headers按钮