当前位置: 首页 > 知识库问答 >
问题:

从AWS lambda设置http响应头

海鸣
2023-03-14

My API Gateway/Lambda安装程序返回HTTP响应头:Lambda使用回调函数作为JSON的一部分返回值,集成响应将其映射到HTTP头(使用Integration.response.body

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

如何从Lambda响应映射头而不复制响应体中的值?

共有3个答案

严正初
2023-03-14

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

要从正文部分删除重复的标题,请在集成响应中使用映射模板,并忽略映射中的标题。我认为您可能使用了直通响应,这就是为什么您会看到重复的标题。

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

葛飞扬
2023-03-14

而且,如果您没有启用Lamba代理集成,您可以在amazon API网关控制台中添加(并映射)响应标头:

转到资源-

已解决此错误…:“请求的资源上不存在“Access Control Allow Origin”标头”

袁飞鹏
2023-03-14

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

node.js例子:

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

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

有关代理集成,请参见Lambda函数的输出格式。

 类似资料:
  • 我有密码 当我使用 curl http://localhost:8080/graph 当我向该URL发送一个POST请求时,我需要返回状态201,用于创建和方法POST。在这方面需要一些帮助。谢谢.

  • 主要内容:HTTP响应完整格式HTTP响应完整格式 HTTP的响应也由三部分组成(响应行+响应头+响应体): 以下是一个实际的HTTP响应示例: ①报文协议及版本; ②状态码及状态描述; ③响应报文头,也是由多个属性组成; ④响应报文体,即我们真正要的“干货”。

  • 基本响应 当然,所有的路由及控制器必须返回某个类型的响应,并发送回用户的浏览器。Laravel 提供了几种不同的方法来返回响应。最基本的响应就是从路由或控制器简单的返回一个字符串: $router->get('/', function () { return 'Hello World'; }); 指定的字符串会被框架自动转换成 HTTP 响应。 响应对象 但是,对于大多数路由和控制器行为

  • Blade 中操作响应的对象是 Response 发送文本 Response#text 用于发送一个状态码为 200 的文本响应 public void responseText(Response response){ response.text("Hello World"); } 发送HTML Response#html 用于发送一个状态码为 200 的HTML响应 public voi

  • 下面的配置位接受一个HTTP POST,其中包含一个要创建的用户实例的JSON请求体,但如果我能让它返回一个创建的

  • 在HttpServletResponse接口中定义了若干设置HTTP响应消息头的方法,如addHeader方法可以添加响应消息头字段;addIntHeader方法可以添加整数值的响应消息头字段;setContextType方法可以设置Context-Type字段值。 HTTP响应消息头是由若干key-value对组成的,其中key表示字段名,value表示字段值,中间用冒号(:)分隔。如下面的内容