我使用API网关+基于JWT的授权来保护我的AWS lambda函数。我可以在我的aws控制台中为授权人获取正确的策略。我正在尝试访问的lambda函数单独运行良好。当我将GET_CUSTOMERS_URI
的授权更改为"无"并获取数据时,它运行良好。但当使用API网关组合在一起时,会产生400个错误请求错误。我知道这与前端的请求方式有关,但我无法弄清楚。
我的提取请求看起来像这样[Rreact 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"
}
]
}
原来是CORS错误。我通过以下方式解决了这个问题:-
- 在API网关中选择一个端点
- 单击
Actions
->Enable CORS
- 将
Access-Control-Allow-Headers
字段设置为用逗号分隔的所有值,您将作为头从前端传递 - 单击
Enable CORS and replace existing CORS headers
按钮