RemoveRequestParameter GatewayFilter 工厂
RemoveRequestParameter GatewayFilter 工厂接受一个 name 参数。 这是要被移除的查询参数(Query Parameter)的名称。
以下示例配置了一个 RemoveRequestParameter GatewayFilter:
application.yml
yaml
spring:
cloud:
gateway:
routes:
- id: removerequestparameter_route
uri: https://example.org
filters:
- RemoveRequestParameter=red作用: 此配置会在请求被发送到下游之前,移除名为 red 的查询参数。
补充教学 —— 为什么要移除请求参数?
场景 1:移除网关专用的控制参数
- 场景:你可能设计了一个 URL,如
api/users?debug=true&userId=123。 - 网关逻辑:网关检测到
debug=true,决定开启详细日志记录或路由到测试环境。 - 问题:后端微服务可能不认识这个
debug参数,或者如果传给后端会引起歧义。 - 解决:网关用完
debug参数后,使用RemoveRequestParameter=debug把它删掉,后端只收到干净的api/users?userId=123。
场景 2:安全过滤
- 场景:某些遗留系统可能会在 URL 参数中传递敏感信息(如
token=xxxx),这是不安全的。 - 网关逻辑:网关拦截请求,将
token取出并转存到 Header 中(更安全的位置),然后使用RemoveRequestParameter=token将 URL 上的敏感参数抹除,防止它出现在下游服务的访问日志中。