我已经尝试很长时间了,以使我的API Gateway上的GET方法生效,希望这里有人可以帮助我。
让我给您一块土地:我在S3存储桶中有一个HTML网站。在网站上,我有一个按钮,该按钮从AWS API Gateway调用API,以便通过Lambda函数从DynamoDB获取一些数据。 当按下按钮时,网站上的用户将发送以下AJAX呼叫:
$.ajax({
method: 'GET',
url: /*my API Link*/ ,
headers: {
Authorization: authToken
},
contentType: 'application/json',
success: function(data) {
alert(JSON.stringify(data))
});
}
该呼叫包括从AWS Cognito生成的令牌。单独测试令牌时,如果没有任何问题。
在API网关中,我已经相应地创建了GET方法以及令牌和用户池的授权。集成请求引用了正确的Lambda函数,我选择了“使用Lambda代理集成”。单击按钮时,我可以看到Lambda函数被调用并按照CloudWatch中的预期执行。
但是,现在是问题所在,我没有从Lambda函数取回数据。在Chrome控制台中,我收到以下错误消息:
Failed to load resource: the server responded with a status of 403 ()
xxx.html:1
Failed to load https://xxx.amazonaws.com/prod: Response to preflight
the request doesn't pass access control check: No 'Access-Control-Allow-
Origin' header is present on the requested resource. Origin 'https://s3-
eu-west-2.amazonaws.com' is therefore not allowed access. The response
had HTTP status code 403.
在部署API之前,我已启用CORS。有人可以帮助解决这个问题吗?