Skip to content

Commit f5b5f9a

Browse files
committed
Fix forwarded host formatting
Follow-up to recent commit 75e2e2c Closes gh-34253
1 parent 83cdd58 commit f5b5f9a

File tree

3 files changed

+5
-4
lines changed

3 files changed

+5
-4
lines changed

spring-web/src/main/java/org/springframework/web/util/ForwardedHeaderUtils.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -181,7 +181,8 @@ private static void adaptForwardedHost(UriComponentsBuilder uriComponentsBuilder
181181
String forHeader = headers.getFirst("X-Forwarded-For");
182182
if (StringUtils.hasText(forHeader)) {
183183
String host = StringUtils.tokenizeToStringArray(forHeader, ",")[0];
184-
host = (!host.startsWith("[") && !host.endsWith("]") ? "[" + host + "]" : host);
184+
boolean ipv6 = (host.indexOf(':') != -1);
185+
host = (ipv6 && !host.startsWith("[") && !host.endsWith("]") ? "[" + host + "]" : host);
185186
return InetSocketAddress.createUnresolved(host, port);
186187
}
187188

spring-web/src/test/java/org/springframework/web/filter/ForwardedHeaderFilterTests.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -481,7 +481,7 @@ void xForwardedForSingleIdentifier() throws Exception {
481481
request.addHeader(X_FORWARDED_FOR, "203.0.113.195");
482482
HttpServletRequest actual = filterAndGetWrappedRequest();
483483

484-
assertThat(actual.getRemoteAddr()).isEqualTo(actual.getRemoteHost()).isEqualTo("[203.0.113.195]");
484+
assertThat(actual.getRemoteAddr()).isEqualTo(actual.getRemoteHost()).isEqualTo("203.0.113.195");
485485
assertThat(actual.getRemotePort()).isEqualTo(MockHttpServletRequest.DEFAULT_SERVER_PORT);
486486
}
487487

@@ -490,7 +490,7 @@ void xForwardedForMultipleIdentifiers() throws Exception {
490490
request.addHeader(X_FORWARDED_FOR, "203.0.113.195, 70.41.3.18, 150.172.238.178");
491491
HttpServletRequest actual = filterAndGetWrappedRequest();
492492

493-
assertThat(actual.getRemoteAddr()).isEqualTo(actual.getRemoteHost()).isEqualTo("[203.0.113.195]");
493+
assertThat(actual.getRemoteAddr()).isEqualTo(actual.getRemoteHost()).isEqualTo("203.0.113.195");
494494
assertThat(actual.getRemotePort()).isEqualTo(MockHttpServletRequest.DEFAULT_SERVER_PORT);
495495
}
496496

spring-web/src/test/java/org/springframework/web/server/adapter/ForwardedHeaderTransformerTests.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -230,7 +230,7 @@ void xForwardedFor() {
230230

231231
request = this.requestMutator.apply(request);
232232
assertThat(request.getRemoteAddress()).isNotNull();
233-
assertThat(request.getRemoteAddress().getHostName()).isEqualTo("[203.0.113.195]");
233+
assertThat(request.getRemoteAddress().getHostName()).isEqualTo("203.0.113.195");
234234
}
235235

236236

0 commit comments

Comments
 (0)