amazon-web-services - 使用 Lambda 代理集成在来自 API Gateway 的 5XX 响应上添加 CORS header

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

我有一个与 API Gateway 的 Lambda 代理集成,工作正常。

CORS 直接在 lambda 代码中处理,并检查授权域列表。

但现在的问题是在 Lambda 执行期间出现意外错误。

在这种情况下,API Gateway 会返回以下消息:

{
    message: "Internal server error"
}

502 HTTP 状态代码。对我来说不幸的是,Access-Control-Allow-Origin该响应中缺少 header ,这会导致客户端出错。

例如,超时也会发生同样的情况。 HTTP 状态代码然后是 504但回复内容又缺少Access-Control-Allow-Origin是一样的。

在权限问题的情况下也会出现同样的问题:如果 API 网关没有足够的权限来调用 Lambda,则 500返回错误,但再次没有任何标题。

固定值 '*'在 Lambda 错误的情况下可以,但是如何以及在哪里配置?

最佳答案

使用这些值在您的处理程序函数中添加此回调,您可以在正文中添加适当的响应

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

关于amazon-web-services - 使用 Lambda 代理集成在来自 API Gateway 的 5XX 响应上添加 CORS header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50137880/

相关文章:

python - 使用分页测试 boto3/botocore

amazon-web-services - AWS SAM 模板(带有 OpenAPI),用于使用自定义 Lambda 授权方部署 HTTP API

python - 在aws lambda上运行时如何解决python中的cx_Oracle问题

api - AWS API Gateway 获取带有 '+' 符号的请求查询参数不起作用

aws-lambda - 如何杀死 LAMBDA 热容器以刷新 RDS Connection.pool 中的所有数据

javascript - 为什么 AWS Lambda Node.js 示例包含带有 "S:"和 "N:"等键的 javascript 对象?

amazon-web-services - 文件上传的最长 Amazon S3 复制时间是多少?

node.js - 在 NodeJs 中使用 AWS KMS 解密文本

linux - AWS lambda 生成 `CXXABI_1.3.9' 在 native 库调用中找不到

aws-lambda - AWS X 射线 : Is it possible to add the API Gateway call to the service map?