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移除Cookie或Authorization,确保下游只接收清洗过的安全数据。
场景 2:避免冲突
- 场景:网关可能会自动添加某个 Header(如
X-Forwarded-For)。如果客户端自己也伪造了一个这样的 Header 发过来,可能会导致后端解析 IP 错误。 - 解决:先用
RemoveRequestHeader删掉客户端传来的,再由网关自己添加可信的。