我正在使用 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"
}
]
}
答案 0 :(得分:0)
事实证明这是一个 CORS 错误。我通过以下方式解决了这个问题:-
Actions
-> Enable CORS
Access-Control-Allow-Headers
字段设置为以逗号分隔的所有值,您将作为前端的标头传递Enable CORS and replace existing CORS headers
按钮