diff --git a/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/support/ipresolver/XForwardedRemoteAddressResolver.java b/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/support/ipresolver/XForwardedRemoteAddressResolver.java index 4895c9b4..b2d3e92a 100644 --- a/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/support/ipresolver/XForwardedRemoteAddressResolver.java +++ b/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/support/ipresolver/XForwardedRemoteAddressResolver.java @@ -126,11 +126,11 @@ public class XForwardedRemoteAddressResolver implements RemoteAddressResolver { log.warn("Multiple X-Forwarded-For headers found, discarding all"); return Collections.emptyList(); } - List values = Arrays.asList(xForwardedValues.get(0).split(", ")); - if (values.size() == 1 && !StringUtils.hasText(values.get(0))) { + String[] values = StringUtils.tokenizeToStringArray(xForwardedValues.get(0), ","); + if (values.length == 1 && !StringUtils.hasText(values[0])) { return Collections.emptyList(); } - return values; + return Arrays.asList(values); } } diff --git a/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/handler/predicate/XForwardedRemoteAddrRoutePredicateFactoryTests.java b/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/handler/predicate/XForwardedRemoteAddrRoutePredicateFactoryTests.java index 58c1b602..7f2c28c7 100644 --- a/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/handler/predicate/XForwardedRemoteAddrRoutePredicateFactoryTests.java +++ b/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/handler/predicate/XForwardedRemoteAddrRoutePredicateFactoryTests.java @@ -56,7 +56,7 @@ public class XForwardedRemoteAddrRoutePredicateFactoryTests extends BaseWebClien @Test public void xForwardedRemoteAddrWorksUsingRightMostValueByDefault() { Mono result = webClient.get().uri("/xforwardfor") - .header("X-Forwarded-For", "99.99.99.99, 12.34.56.78").exchangeToMono(Mono::just); + .header("X-Forwarded-For", "99.99.99.99,12.34.56.78").exchangeToMono(Mono::just); StepVerifier.create(result).consumeNextWith(response -> assertStatus(response, HttpStatus.OK)).expectComplete() .verify(Duration.ofSeconds(20)); diff --git a/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/support/ipresolver/XForwardedRemoteAddressResolverTest.java b/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/support/ipresolver/XForwardedRemoteAddressResolverTest.java index 37d48ee6..13a29416 100644 --- a/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/support/ipresolver/XForwardedRemoteAddressResolverTest.java +++ b/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/support/ipresolver/XForwardedRemoteAddressResolverTest.java @@ -138,7 +138,7 @@ public class XForwardedRemoteAddressResolverTest { private MockServerHttpRequest.BaseBuilder oneTwoThreeBuilder() { return MockServerHttpRequest.get("someUrl").remoteAddress(remote0000Address).header("X-Forwarded-For", - "0.0.0.1, 0.0.0.2, 0.0.0.3"); + "0.0.0.1,0.0.0.2, 0.0.0.3"); } private ServerWebExchange buildExchange(MockServerHttpRequest.BaseBuilder requestBuilder) {