Skip to content

MapRequestHeader GatewayFilter 工厂

MapRequestHeader GatewayFilter 工厂接受 fromHeadertoHeader 两个参数。

功能逻辑: 它会创建一个新的命名 Header (toHeader),其值是从传入的 HTTP 请求中现有的命名 Header (fromHeader) 中提取的。

  • 如果输入的 Header (fromHeader) 不存在,则该过滤器不产生任何影响。
  • 如果新的命名 Header (toHeader) 已经存在,则提取出的值会被追加到现有值之后(增强)。

配置示例

以下示例配置了一个 MapRequestHeader

application.yml

yaml
spring:
  cloud:
    gateway:
      routes:
      - id: map_request_header_route
        uri: https://example.org
        filters:
        - MapRequestHeader=Blue, X-Request-Red

效果: 此配置会将 X-Request-Red:<values> Header 添加到下游请求中,其中的 <values> 来自于传入 HTTP 请求的 Blue Header 的值。简单来说,就是把请求头 Blue 的值复制(或映射)给 X-Request-Red

补充教学 —— 为什么要用 MapRequestHeader?

场景举例:老系统迁移或协议适配

假设你有一个旧的客户端 App,它在发送请求时,把用户的 Token 放在了一个叫 Blue 的非标准 Header 里。 但是,你的新版微服务后端(下游服务)只识别标准的或者自定义的 X-Request-Red Header。

  • 不改客户端:你不想强迫旧版 App 升级发版。
  • 不改服务端:你也不想为了兼容旧版 App 专门去改后端的代码读取逻辑。
  • 网关层适配:使用 MapRequestHeader=Blue, X-Request-Red
    • 网关收到请求,看到有 Blue
    • 网关自动把 Blue 的值读出来,塞给 X-Request-Red
    • 后端微服务收到了 X-Request-Red,处理逻辑一切正常。

这是一个典型的适配器模式在网关层的应用。


Based on Spring Framework.