我的API网关/ Lamdba设置返回一个http响应标头: Lamdba使用回调函数将值作为json的一部分返回 并且Integration Response将其映射到标题(使用integration.response.body)
使用此解决方案,值将在正文和标题中发回。
如何在不重复响应正文中的值的情况下映射Lambda响应中的标题?
答案 0 :(得分:29)
如果您启用了 Lambda代理集成,则可以将响应标头设置为Lambda输出的一部分,API Gateway将作为对客户端的HTTP响应的一部分返回它们。
Node.js示例:
callback(null, {
"isBase64Encoded": false, // Set to `true` for binary support.
"statusCode": 200,
"headers": {
"header1Name": "header1Value",
"header2Name": "header2Value",
},
"body": "...",
});
如果不返回额外的响应标头,headers
可以 null 或未指定。
请参阅Output Format of a Lambda Function for Proxy Integration。
答案 1 :(得分:1)
并且,如果您不启用了 Lamba代理集成,您可以在amazon API网关控制台中添加(并映射)响应标头:
转到资源 - >方法执行 - >方法响应 - >为http状态200添加'Access-Control-Allow-Origin'(或其他)标头。然后返回方法执行 - >方法集成 - > http状态200 - >将“Access-Control-Allow-Origin”的标题映射设置为“*”(或其他)。
解决了这个错误......:“请求的资源上没有'Access-Control-Allow-Origin'标题”
答案 2 :(得分:0)
由于该问题指出正在使用自定义映射(使用integration.response.body),因此这意味着Lambda代理集成未使用 NOT 。因此,在这种情况下,解决方案是按照已经执行的方式映射标头。
要从主体部分删除标头重复项,请在集成响应中使用映射模板,并忽略映射中的标头。我认为您可能正在使用传递响应,这就是为什么看到重复的标题的原因。