在静态网页上从aws sdk javascript调用Hello Lambda函数是否需要CORS配置?
有人能指引我吗。我是新来的。 我正在尝试使用aws sdk从普通html页面访问Lambda函数,结果发现CORS错误。是否需要Cors配置,因为我的html只是我的桌面,我不会从服务器或s3 bucket访问任何内容 浏览器中出现错误: 已阻止跨源请求:同一源策略不允许读取位于的远程资源。(原因:CORS请求失败) 我的Lambda函数: -使用Java 8使用Hello world模板创建在静态网页上从aws sdk javascript调用Hello Lambda函数是否需要CORS配置?,cors,aws-sdk,aws-lambda,Cors,Aws Sdk,Aws Lambda,有人能指引我吗。我是新来的。 我正在尝试使用aws sdk从普通html页面访问Lambda函数,结果发现CORS错误。是否需要Cors配置,因为我的html只是我的桌面,我不会从服务器或s3 bucket访问任何内容 浏览器中出现错误: 已阻止跨源请求:同一源策略不允许读取位于的远程资源。(原因:CORS请求失败) 我的Lambda函数: -使用Java 8使用Hello world模板创建 public class TestLambda { public String myHandl
public class TestLambda {
public String myHandler(int myCount, Context context) {
LambdaLogger logger = context.getLogger();
logger.log("received:" + myCount);
return String.valueOf(myCount);
}
}
我的Javascript
var lambda = new AWS.Lambda({apiVersion: '2015-03-31', region:'us-west-2', accessKeyId: "xxx",
secretAccessKey: 'xxx/xxx'} ;
lambda.invoke({
FunctionName: 'TestHandler',
Payload: JSON.stringify('111111')
}, function(err, data){
alert("function returned");
if(err) {
alert("It was an error" + err.stack);
} else {
alert("it was success");
alert("result is " + data);
}
});
我得到警报,那是个错误
提前感谢。我不认为javascript SDK是用于客户端的(在浏览器中)。我认为它是为了与node.js应用程序一起使用——在这里您不会遇到CORS错误。您肯定不希望accessKey和secretAccessKey在HTML中公开。无论如何,向浏览器公开Lambda的典型方法是使用API网关。基本设置在此处完成: 在api设置完成后,您还需要通过以下步骤为其设置CORS:
我创建了一篇博客文章,展示了如何使用API网关设置Lambda,以创建一个Slack Bot风格的集成:CORS是跨源资源共享。由于您的html位于本地计算机(localhost)上,并且Lambda具有不同的域,因此将抛出CORS错误。API网关也是如此(如果您的lambda位于API网关之后)。您将得到一些错误,如-
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://test123.us-west-2.amazonaws.com/dev. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing).
所以规则是,如果您的站点域/主机名与您从javascript调用的API不同,您需要提交CORS。谢谢。这真的很有帮助。我能够通过api网关调用lambda api。