From faa2d732b3a7643049409a5c8442d1f71a28c41c Mon Sep 17 00:00:00 2001 From: Spencer Gibb Date: Wed, 23 Aug 2017 14:08:40 -0600 Subject: [PATCH] Preserve the original, unmodified url in an exchange attribute. It is stored in ServerWebExchangeUtils.GATEWAY_ORIGINAL_REQUEST_URL_ATTR --- .../cloud/gateway/filter/LoadBalancerClientFilter.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/spring-cloud-gateway-core/src/main/java/org/springframework/cloud/gateway/filter/LoadBalancerClientFilter.java b/spring-cloud-gateway-core/src/main/java/org/springframework/cloud/gateway/filter/LoadBalancerClientFilter.java index fd9efcd0..6c02eb24 100644 --- a/spring-cloud-gateway-core/src/main/java/org/springframework/cloud/gateway/filter/LoadBalancerClientFilter.java +++ b/spring-cloud-gateway-core/src/main/java/org/springframework/cloud/gateway/filter/LoadBalancerClientFilter.java @@ -29,6 +29,7 @@ import org.springframework.web.server.ServerWebExchange; import org.springframework.web.server.WebFilterChain; import org.springframework.web.util.UriComponentsBuilder; +import static org.springframework.cloud.gateway.support.ServerWebExchangeUtils.GATEWAY_ORIGINAL_REQUEST_URL_ATTR; import static org.springframework.cloud.gateway.support.ServerWebExchangeUtils.GATEWAY_REQUEST_URL_ATTR; import reactor.core.publisher.Mono; @@ -58,6 +59,9 @@ public class LoadBalancerClientFilter implements GlobalFilter, Ordered { if (url == null || !url.getScheme().equals("lb")) { return chain.filter(exchange); } + //preserve the original url + exchange.getAttributes().put(GATEWAY_ORIGINAL_REQUEST_URL_ATTR, url); + log.trace("LoadBalancerClientFilter url before: " + url); final ServiceInstance instance = loadBalancer.choose(url.getHost());