从 AWS lambda 设置 http 响应标头



My API Gateway/Lambda setup返回一个HTTP响应标头:Lambda 使用回调函数将值作为 JSON 的一部分返回集成响应将其映射到 HTTP 标头(使用 integration.response.body (

使用此解决方案,值将在正文和标头中发回。

如何在不复制响应正文中的值的情况下映射来自 Lambda 响应的标头?

如果您启用了 Lambda 代理集成,则可以将响应标头设置为 Lambda 输出的一部分,API 网关会将它们作为 HTTP 响应的一部分返回给客户端。

节点.js示例:

callback(null, {
    "isBase64Encoded": false, // Set to `true` for binary support.
    "statusCode": 200,
    "headers": {
        "header1Name": "header1Value",
        "header2Name": "header2Value",
    },
    "body": "...",
});

其中,如果不返回额外的响应标头,则headers可以为 null 或未指定。

请参阅用于代理集成的 Lambda 函数的输出格式。

如果您

启用 Lamba 代理集成,则可以在 Amazon API 网关控制台中添加(并映射(响应标头:

转到资源 -> 方法执行 -> 方法响应 ->为 HTTP 状态 200 添加"访问控制-允许-源"(或其他(标头。然后返回到方法执行 -> 集成响应 -> http status 200 -> 将"Access-Control-Allow-Origin"的标头映射设置为"*"(或其他任何内容(。

解决了此错误...:"请求的资源上不存在'访问控制-允许源'标头">

由于问题指出正在使用自定义映射(使用 integration.response.body(,这意味着使用 Lambda 代理集成。因此,在这种情况下,解决方案是按照您已经做的方式映射标头。

要从正文部分删除标头重复项,请在集成响应中使用映射模板并忽略映射中的标头。我认为您可能正在使用传递响应,这就是您看到重复标头的原因。

在此处查看更多文档:https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-mapping-template-reference.html

相关内容

  • 没有找到相关文章