我的API Gateway/Lambda设置返回一个HTTP响应头:Lambda使用回调函数将值作为JSON的一部分返回,而集成响应使用integration.response.body
将其映射到HTTP头部。
通过这种解决方案,这些值既在正文中发送,也在头部中发送。
如何在不重复响应正文中的值的情况下映射来自Lambda响应的头部?
我的API Gateway/Lambda设置返回一个HTTP响应头:Lambda使用回调函数将值作为JSON的一部分返回,而集成响应使用integration.response.body
将其映射到HTTP头部。
通过这种解决方案,这些值既在正文中发送,也在头部中发送。
如何在不重复响应正文中的值的情况下映射来自Lambda响应的头部?
callback(null, {
"isBase64Encoded": false, // Set to `true` for binary support.
"statusCode": 200,
"headers": {
"header1Name": "header1Value",
"header2Name": "header2Value",
},
"body": "...",
});
其中headers
参数可以为null或未指定,如果不需要返回额外的响应头。
如果您没有启用Lamba代理集成,您可以在Amazon API网关控制台中添加(和映射)响应标头:
转到资源 -> 方法执行 -> 方法响应 -> 为http状态200添加'Access-Control-Allow-Origin'(或其他)标头。然后返回方法执行 -> 集成响应 -> http状态200 -> 为'Access-Control-Allow-Origin'设置标头映射为'*'(或其他)。
解决此错误:“请求的资源上不存在'Access-Control-Allow-Origin'标头”
由于问题说明正在使用自定义映射(使用integration.response.body),这意味着未使用Lambda Proxy集成。因此,在这种情况下,解决方案是以你已经采用的方式映射标头。
为了从正文部分删除标题重复项,请在集成响应中使用映射模板并忽略映射中的标题。我认为你可能正在使用传递响应,这就是为什么你看到重复标题的原因。