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)会自动在响应头里加上
Server或X-Powered-By,暴露了具体的版本号(例如Server: Apache/2.4.6)。 - 风险:黑客可能会利用特定版本的已知漏洞进行攻击。
- 解决:在网关层统一配置
RemoveResponseHeader=Server和RemoveResponseHeader=X-Powered-By,让外界不知道你后端用了什么技术。
场景 2:移除内部调试信息
- 现象:后端开发为了方便调试,可能在响应头里输出了
X-Internal-Debug-TraceId或数据库查询耗时。 - 风险:这些信息不应该暴露给公网用户。
- 解决:上线前配置网关移除这些特定的调试 Header。