如何使用AWS API网关和Lambda克服CORS?

时间:2019-02-10 01:59:51

标签: cors aws-lambda aws-api-gateway

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

See my lambda function here on Github

我通过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.

我尝试了多种方法:

  1. 按照https://serverless.com/blog/cors-api-gateway-survival-guide/的建议添加npm包middy
  2. 在lambda中使用回调,并根据以下问题的建议添加CORS:Configure CORS response headers on AWS Lambda?

任何人都可以解释如何访问lambda函数吗?

1 个答案:

答案 0 :(得分:0)

如果您使用的是 LAMBDA-PROXY 集成,则意味着您的响应需要Access-Control-Allow-Origin标头。

这是函数示例:

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

在这里您可以找到有关类似问题的更多详细信息:https://github.com/serverless/serverless/issues/1955