Tokenize x-forwarded-for regardless of whitespace.

Fixes gh-2479
This commit is contained in:
spencergibb
2023-03-03 16:14:54 -05:00
parent 218cbe5f50
commit e7610612db
3 changed files with 5 additions and 5 deletions

View File

@@ -126,11 +126,11 @@ public class XForwardedRemoteAddressResolver implements RemoteAddressResolver {
log.warn("Multiple X-Forwarded-For headers found, discarding all");
return Collections.emptyList();
}
List<String> 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);
}
}

View File

@@ -56,7 +56,7 @@ public class XForwardedRemoteAddrRoutePredicateFactoryTests extends BaseWebClien
@Test
public void xForwardedRemoteAddrWorksUsingRightMostValueByDefault() {
Mono<ClientResponse> 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));

View File

@@ -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) {