如何为AWS API网关资源启用CORS

时间:2018-01-31 09:53:09

标签: amazon-web-services cors aws-lambda aws-api-gateway

我使用AWS API Gateway& amp;创建了REST API。 AWS Lambda和我配置CORS时遇到了这样的问题 - 我能够为OPTIONS方法配置CORS响应头,但对于GET方法没有。

我是根据Amazon documentation制作的,但是当我调用GET方法时,我没有看到所需的标题(Access-Control-Allow-Methods,Access-Control-Allow-Headers,Access-Control-Allow -Origin)作出回应。由于我在客户端出错:

  

无法加载#my_test_rest#:No' Access-Control-Allow-Origin'标头出现在请求的资源上。因此,不允许来源#my_test_rest_url#访问。

作为临时修复,我在Lambda函数的代码中硬编码所需的标题,但它看起来不像正确的解决方案,我想了解它为什么不适合我。我有什么想法,我做错了什么?

1 个答案:

答案 0 :(得分:5)

由于您正在为方法使用Lambda Proxy集成,因此您需要:

(1)提供Access-Control-Allow-Origin标头作为Lambda响应的一部分。例如:

callback(null, {
    statusCode: 200,
    headers: {"Content-Type": "application/json", "Access-Control-Allow-Origin": "*"},
    body: JSON.stringify({message: "Success"})
});

(2)并在方法响应配置中将Access-Control-Allow-Origin添加为200响应标头。