Tokenize x-forwarded-for regardless of whitespace.
Fixes gh-2479
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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));
|
||||
|
||||
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user