我已经设置了AWS使用计划,并将密钥附加到API。
我有一个抛出403 Forbidden的代码。
fetch(myapi, {
method: 'GET',
headers: {
'Content-Type': 'application/json',
'x-api-key': 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
}
})
.then(function(response) {
return response.json();
})
.then(function(json) {
return json;
});
当我在同一个api上用相同的键运行Curl时,它会返回200 OK
卷曲-i-H";x-api-key:xxxxxxxxxxxxxxxxxxxxxx"-X获取https://xxxxxxxx.execute-api.us-east-1.amazonaws.com/Stage/test.
Fetch API代码出了什么问题?
如果这个fetch API调用是在浏览器中完成的,那么您可能需要检查OPTIONS是否也需要API键。我以前遇到过这种情况,我也可以卷曲并通过邮递员运行API。尝试在没有x-api-key的情况下对OPTION进行curl调用,看看是否出现错误。如果出现错误,则需要在调用OPTIONS时添加x-api-key,或者可以在api网关中禁用它。你可以按照这个参考来禁用它。
只需将API密钥设置为假
根据AWS文档,确保您的获取url正确设置为以下参数https://{api_id}。execute api.{region}。amazonaws.com/{stage_name}/{resource_name}
以下标题也应该足够了:
headers: {
'x-api-key': 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
}
这里的剪报生成与邮差:
var myHeaders = new Headers();
myHeaders.append("x-api-key", "myApiKey");
var requestOptions = {
method: 'GET',
headers: myHeaders,
redirect: 'follow'
};
fetch("https://1234567889.execute-api.us-east-1.amazonaws.com/myStageName/MyEndpoint", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));