amazon-web-services - 如何为 AWS API Gateway 资源启用 CORS

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

我使用 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/

相关文章:

amazon-web-services - 您可以从 Amazon AWS 中的 lambda 函数发送 SNS 推送通知吗?

amazon-web-services - 如何过滤Elasticache发送的SNS消息?

javascript - fetch API 中的 request.mode 有什么意义,尤其是对于 cors?

python - 运算符或函数的操作数类型不正确;运算符 : ADD, 操作数类型 : STRING, typeSet:ALLOWED_FOR_ADD_OPERAND

ruby-on-rails - Googlebot 在 Rails 4.1 上导致无效的跨域请求 (COR)

google-app-engine - XMLHttpRequest 错误

python - 如何使用 Python 作为运行环境在 AWS Lambda 中将 HTML 转换为 PDF

amazon-web-services - Cloud Formation 模板将入口规则添加到现有安全组

amazon-web-services - AWS EC2 SSH连接到主机的连接超时

amazon-web-services - CloudFront - 从 S3 提供静态网站,在自定义端口上将 API 请求路由到 EC2