HttpHeadersFilters
HttpHeadersFilters 会在请求发送到下游之前应用,例如在 NettyRoutingFilter 中。
转发头过滤器
Forwarded 头部过滤器会创建一个 Forwarded 头部并发送给下游服务。它会将当前请求的 Host 头部、协议方案和端口添加到任何已存在的 Forwarded 头部中。要激活此过滤器,请将 spring.cloud.gateway.server.webflux.trusted-proxies 属性设置为一个 Java 正则表达式。该正则表达式定义了出现在 Forwarded 头部中时受信任的代理。
Forwarded by 标头部分可以通过将以下属性设置为 true 来启用(默认为 false):
spring.cloud.gateway.server.webflux.forwarded.by.enabled=true
RemoveHopByHop Headers Filter
RemoveHopByHop 头部过滤器会从转发的请求中移除特定头部。默认移除的头部列表源自 IETF。
默认移除的请求头为:
-
Connection
-
Keep-Alive
-
Proxy-Authenticate
-
Proxy-Authorization
-
TE
-
Trailer
-
Transfer-Encoding
-
Upgrade
要更改此设置,请将 spring.cloud.gateway.server.webflux.filter.remove-hop-by-hop.headers 属性设置为要移除的请求头名称列表。
XForwarded Headers Filter
XForwarded 头部过滤器会创建各种 X-Forwarded-* 头部并发送给下游服务。它使用当前请求的 Host 头部、协议、端口和路径来创建这些头部。要激活此过滤器,请将 spring.cloud.gateway.server.webflux.trusted-proxies 属性设置为一个 Java 正则表达式。该正则表达式定义了出现在 Forwarded 头部中时受信任的代理。
可以通过以下布尔属性控制单个标题的创建(默认为 true):
-
spring.cloud.gateway.server.webflux.x-forwarded.for-enabled -
spring.cloud.gateway.server.webflux.x-forwarded.host-enabled -
spring.cloud.gateway.server.webflux.x-forwarded.port-enabled -
spring.cloud.gateway.server.webflux.x-forwarded.proto-enabled -
spring.cloud.gateway.server.webflux.x-forwarded.prefix-enabled
可以通过以下布尔属性控制是否追加多个头部(默认为 true):
-
spring.cloud.gateway.server.webflux.x-forwarded.for-append -
spring.cloud.gateway.server.webflux.x-forwarded.host-append -
spring.cloud.gateway.server.webflux.x-forwarded.port-append -
spring.cloud.gateway.server.webflux.x-forwarded.proto-append -
spring.cloud.gateway.server.webflux.x-forwarded.prefix-append