Skip to content

RemoveRequestHeader GatewayFilter 工厂

RemoveRequestHeader GatewayFilter 工厂接受一个 name 参数。 这是要被移除的 Header 名称。

以下示例配置了一个 RemoveRequestHeader GatewayFilter:

application.yml

yaml
spring:
  cloud:
    gateway:
      routes:
      - id: removerequestheader_route
        uri: https://example.org
        filters:
        - RemoveRequestHeader=X-Request-Foo

作用: 此配置会在请求被发送到下游之前,移除 X-Request-Foo Header。

补充教学 —— 为什么要移除请求头?

场景 1:安全清洗(移除敏感信息)

  • 前端行为:前端可能为了某种目的(或者被恶意篡改),在请求头里带上了 Cookie 或自定义的 X-Auth-Token
  • 网关逻辑:网关验证完身份后,通常会将用户信息解析出来,放入一个新的 Header(如 X-User-Id)传给后端。
  • 安全隐患:如果不移除原始的 Cookie 或 Token,直接透传给下游微服务,可能会导致下游服务误用这些凭证,或者在日志中打印出敏感 Token。
  • 解决:使用 RemoveRequestHeader 移除 CookieAuthorization,确保下游只接收清洗过的安全数据。

场景 2:避免冲突

  • 场景:网关可能会自动添加某个 Header(如 X-Forwarded-For)。如果客户端自己也伪造了一个这样的 Header 发过来,可能会导致后端解析 IP 错误。
  • 解决:先用 RemoveRequestHeader 删掉客户端传来的,再由网关自己添加可信的。

Based on Spring Framework.