【发布时间】:2020-12-13 21:38:41
【问题描述】:
我在 REST API 服务前面有一个 AWS API 网关。当我将请求转发到源时,我想删除一个/一些 HTTP 标头。
我知道如何使用 lambda 来做到这一点,但我只是想知道是否有内置的东西。
【问题讨论】:
标签: amazon-web-services rest amazon-gateway
我在 REST API 服务前面有一个 AWS API 网关。当我将请求转发到源时,我想删除一个/一些 HTTP 标头。
我知道如何使用 lambda 来做到这一点,但我只是想知道是否有内置的东西。
【问题讨论】:
标签: amazon-web-services rest amazon-gateway
做类似的事情最简单的事情是强制给定的标题是一个空字符串。
为此,您可以进入“集成请求”面板(API 网关请求/响应流的第二个块):
在 Headers 块中,您应该找到所有已定义的标头(如果您在创建 API 资源时定义了它)以及相关映射。如果您希望可以编辑映射,将 method.request.header.headerThatYouWantToRemove 字符串替换为您想要取消设置的标头的 ''(注意两个单引号)。
如果您希望取消设置的标题不存在,您可以使用“添加标题”链接添加它。
此时后端端点应该忽略空标头,您就完成了。
相反,如果您希望完全删除标题,则必须使用映射模板和 Velocity 映射模板,但这可能有风险且容易出错。
【讨论】:
Origin 与 oRiGin)将导致两个标头进入后端服务。现在 http 规范说您应该以不区分大小写的方式读取标头,因此您基本上会将 2 个标头发送到后端(或者在您认为要删除标头的情况下,实际上让一个标头通过)。
oRiGin 标头的请求将被丢弃。
使用 VTL 你可以做到这一点。
#if($paramName == "Authorization")
"$paramName" : ""
#else
"$paramName" : "$util.escapeJavaScript($params.get($paramName))"
#end
【讨论】: