Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.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 API网关和Lambda通过CORS?_Cors_Aws Lambda_Aws Api Gateway - Fatal编程技术网

如何使用AWS API网关和Lambda通过CORS?

如何使用AWS API网关和Lambda通过CORS?,cors,aws-lambda,aws-api-gateway,Cors,Aws Lambda,Aws Api Gateway,我目前有一个Lambda函数,在测试它时可以工作(它是一个Mailchimp集成,用于向用户订阅列表) 我通过lambda使用API网关创建了一个API端点 但是,当我在我的应用程序上测试它时(当前通过localhost:3000),我从API网关得到一个CORS错误: Access to XMLHttpRequest at 'https://MY_API.execute-api.us-west-2.amazonaws.com/default/mailchimp-lambda' from or

我目前有一个Lambda函数,在测试它时可以工作(它是一个Mailchimp集成,用于向用户订阅列表)

我通过lambda使用API网关创建了一个API端点

但是,当我在我的应用程序上测试它时(当前通过localhost:3000),我从API网关得到一个CORS错误:

Access to XMLHttpRequest at 'https://MY_API.execute-api.us-west-2.amazonaws.com/default/mailchimp-lambda' from origin 'http://localhost:3000' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
我尝试了多种方法:

  • 按照上的建议在中午添加npm包
  • 在lambda中使用回调并根据此问题的建议添加COR:

  • 有人能解释如何访问lambda函数吗?

    如果您使用的是lambda-PROXY集成,这意味着您的响应需要访问控制允许源标题

    下面是函数示例:

    exports.handler = async (event) => {
        const response = {
            statusCode: 200,
            headers: {
                "Access-Control-Allow-Origin" : "*" // Required for CORS
            },
            body: JSON.stringify('Hello from Lambda!!'),
        };
        return response;
    };
    

    在这里,您可以找到有关类似问题的更多详细信息:

    看起来您没有启用cors。这可能会帮助您:我通过API网关控制台启用了cors:✔ 创建选项方法✔ 将带有空响应模型的200方法响应添加到选项方法✔ 将模拟集成添加到OPTIONS方法✔ 将200集成响应添加到选项方法✔ 将访问控制允许标头、访问控制允许方法、访问控制允许原始方法响应标头添加到选项方法✔ 添加Access Control Allow标头、Access Control Allow方法、Access Control Allow Origin Integration Response标头映射到OPTIONS Method之后是否重新部署了api网关?@deosha是的,我重新部署了,我还添加了一个资源策略,包括“主体”:“*”在声明中,没有用。另外,我正在查看CloudWatch日志,我正在控制台上记录事件。当它来自我的浏览器时,event.body为null,但它是通过Postman定义的。它说httpMethod是选项,这很奇怪,我不认为lambda函数在自动选项请求期间运行。我想在API网关配置->网关响应->默认4XX中,您的配置是什么?您能否在那里添加访问控制允许源:'*并重新部署并再次检查?