Skip to content

RemoveResponseHeader GatewayFilter 工厂

RemoveResponseHeader GatewayFilter 工厂接受一个 name 参数。 这是要被移除的响应头(Response Header)的名称。

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

application.yml

yaml
spring:
  cloud:
    gateway:
      routes:
      - id: removeresponseheader_route
        uri: https://example.org
        filters:
        - RemoveResponseHeader=X-Response-Foo

作用: 此配置会在响应返回给网关客户端之前,将 X-Response-Foo Header 从响应中移除。

最佳实践: 要移除任何类型的敏感 Header,你应该为所有可能需要的路由配置此过滤器。 此外,你也可以使用 spring.cloud.gateway.default-filters 配置一次该过滤器,使其自动应用于所有路由。

补充教学 —— 为什么要移除响应头?

场景 1:隐藏后端技术栈(安全加固)

  • 现象:很多后端框架(如 Nginx, ASP.NET, PHP)会自动在响应头里加上 ServerX-Powered-By,暴露了具体的版本号(例如 Server: Apache/2.4.6)。
  • 风险:黑客可能会利用特定版本的已知漏洞进行攻击。
  • 解决:在网关层统一配置 RemoveResponseHeader=ServerRemoveResponseHeader=X-Powered-By,让外界不知道你后端用了什么技术。

场景 2:移除内部调试信息

  • 现象:后端开发为了方便调试,可能在响应头里输出了 X-Internal-Debug-TraceId 或数据库查询耗时。
  • 风险:这些信息不应该暴露给公网用户。
  • 解决:上线前配置网关移除这些特定的调试 Header。

Based on Spring Framework.