











在 Apache APISIX 中,将请求头某个值写入到响应头,使用 response-rewrite 插件来实现。
这个插件专门用于在 APISIX 返回响应给客户端之前,修改响应的各种属性,包括状态码、响应体和响应头。
response-rewrite 插件配置中的 headers.set 字段非常关键。它的值可以是一个常量,也可以是一个或多个 NGINX 变量,并且支持使用 $ 前缀来引用。
因为请求头(Request Headers)在 APISIX 处理过程中会被转换成相应的 NGINX 变量,所以你可以直接在 headers.set 中引用它们。
配置示例
下面是一个配置示例,它展示了如何将名为 X-User-Id 的请求头值(注意请求头中的减号要变成下划线),写入到名为 X-User-Id-From-Request 的响应头中:
{
"plugins": {
"response-rewrite": {
"headers": {
"set": {
"X-User-Id-From-Request": "$http_x_user_id"
}
}
}
}
}
配置解释
"X-User-Id-From-Request":这是你想要添加到响应中的新响应头名称。"$http_x_user_id":这是 response-rewrite 插件支持的 NGINX 变量,用于读取原始的请求头。http_ 是 NGINX 变量中表示请求头的前缀,请求头名称中的 -(连字符)需要转换为 _(下划线)并转为小写。response-rewrite 插件的其他功能除了设置响应头,该插件还支持:
add) 和移除 (remove) 响应头:操作顺序为 add → remove → set。status_code 字段修改返回的 HTTP 状态码。body 字段完全替换响应体,或通过 filters 字段使用正则表达式部分替换。vars 字段配置执行条件,例如仅在响应状态码为 200 时生效。echo 插件:虽然也可以通过 headers 字段添加响应头,但官方文档明确警告它主要用于示例和学习,不应在生产环境中使用。response-rewrite 是官方提供的、功能全面且生产可用的标准解决方案,足以满足绝大多数需求。response-rewrite 插件是实现你需求的标准、强大且生产可用的方法。通过使用 headers.set 字段并正确引用以 $http_ 开头的 NGINX 变量,可以轻松将请求头的值写入到响应头中。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。