Skip to content

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 上的敏感参数抹除,防止它出现在下游服务的访问日志中。

Based on Spring Framework.