我使用 AWS API Gateway 和 AWS Lambda 创建了 REST API,当我配置 CORS 时,我遇到了这样的问题 - 我能够为 OPTIONS 方法配置 CORS 响应 header ,但不能为 GET 方法配置。
我是根据Amazon documentation做的,但是当我调用 GET 方法时,我没有看到所需的 header (Access-Control-Allow-Methods、Access-Control-Allow-Headers、Access-Control-Allow-Origin)作为响应。因此,我在客户端出现错误:
Failed to load #my_test_rest#: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin #my_test_rest_url# is therefore not allowed access.
作为临时修复,我在 Lambda 函数的代码中硬编码了必需的 header ,但它看起来不是正确的解决方案,我想了解为什么它对我不起作用。知道我做错了什么吗?
最佳答案
由于您将 Lambda 代理集成用于您的方法,因此您需要:
(1) 提供 Access-Control-Allow-Origin
header 作为 Lambda 响应的一部分。例如:
callback(null, {
statusCode: 200,
headers: {"Content-Type": "application/json", "Access-Control-Allow-Origin": "*"},
body: JSON.stringify({message: "Success"})
});
(2) 并在 Method Response 配置中添加 Access-Control-Allow-Origin
作为 200 响应 header 。
关于amazon-web-services - 如何为 AWS API Gateway 资源启用 CORS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48539161/