Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在静态网页上从aws sdk javascript调用Hello Lambda函数是否需要CORS配置?_Cors_Aws Sdk_Aws Lambda - Fatal编程技术网

在静态网页上从aws sdk javascript调用Hello Lambda函数是否需要CORS配置?

在静态网页上从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

有人能指引我吗。我是新来的。 我正在尝试使用aws sdk从普通html页面访问Lambda函数,结果发现CORS错误。是否需要Cors配置,因为我的html只是我的桌面,我不会从服务器或s3 bucket访问任何内容

浏览器中出现错误: 已阻止跨源请求:同一源策略不允许读取位于的远程资源。(原因:CORS请求失败)

我的Lambda函数: -使用Java 8使用Hello world模板创建

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。