Support comma-separated X-Forwarded-Port

Issue: SPR-12813
master
Rossen Stoyanchev 10 years ago
parent 624790a520
commit 88a14488a1
  1. 3
      spring-web/src/main/java/org/springframework/web/util/UriComponentsBuilder.java
  2. 15
      spring-web/src/test/java/org/springframework/web/util/UriComponentsBuilderTests.java

@ -297,7 +297,8 @@ public class UriComponentsBuilder implements Cloneable {
String portHeader = request.getHeaders().getFirst("X-Forwarded-Port");
if (StringUtils.hasText(portHeader)) {
port = Integer.parseInt(portHeader);
String[] ports = StringUtils.commaDelimitedListToStringArray(portHeader);
port = Integer.parseInt(ports[0]);
}
String protocolHeader = request.getHeaders().getFirst("X-Forwarded-Proto");

@ -399,8 +399,23 @@ public class UriComponentsBuilderTests {
assertEquals("https://84.198.58.199/mvc-showcase", result.toString());
}
// SPR-12813
@Test
public void fromHttpRequestWithForwardedPortMultiValueHeader() {
MockHttpServletRequest request = new MockHttpServletRequest();
request.setScheme("http");
request.setServerName("localhost");
request.setServerPort(9090);
request.setRequestURI("/mvc-showcase");
request.addHeader("X-Forwarded-Host", "a.example.org");
request.addHeader("X-Forwarded-Port", "80,52022");
HttpRequest httpRequest = new ServletServerHttpRequest(request);
UriComponents result = UriComponentsBuilder.fromHttpRequest(httpRequest).build();
assertEquals("http://a.example.org/mvc-showcase", result.toString());
}
@Test
public void path() throws URISyntaxException {

Loading…
Cancel
Save