对不起我,我是webdev的新手。
我有一个简单的单页网页托管在firebase托管上,从aws lambda函数获取一些信息(我没有使用谷歌云,因为它没有让我免费进行出站请求)。
lambda函数不接受任何输入。将其视为随机数生成器。
这是客户端请求的方式:
$.ajax({
url: "thatAWSLambdaURL",
crossDomain: true,
xhrFields: {
withCredentials: true
},
method: 'GET',
success: function(data){
console.log('succes: '+data);
}
});
但我在日志中得到这个错误:
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://someAWSLambdaUrl.amazonaws.com/default/someurl. (Reason: CORS header 'Access-Control-Allow-Origin' missing).[Learn More]
我甚至配置我的lambda函数的API网关到Enabled CORs
,Access-Control-Allow-Header
设置为'Content-Type,X-Amz-Date,Authorization,X-Api-Key,X-Amz-Security-Token'
,Access-Control-Allow-Origin
设置为"*"
。
如果我从Firefox或简单的python脚本本地请求lambda函数,它可以完美地工作。这只发生在我从网页上请求时。我该如何解决?
在阅读了这里发现的关于cors的lambda文档:https://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-cors.html
看起来你需要在lambda函数中返回相应的头文件。