UriComponentsBuilder.fromHttpRequest sets port correctly
Cherry-picked from commit d64c48 on master Issue: SPR-12771
This commit is contained in:
@@ -307,6 +307,7 @@ public class UriComponentsBuilder implements Cloneable {
|
||||
|
||||
builder.scheme(scheme);
|
||||
builder.host(host);
|
||||
builder.port(null);
|
||||
if (scheme.equals("http") && port != 80 || scheme.equals("https") && port != 443) {
|
||||
builder.port(port);
|
||||
}
|
||||
|
||||
@@ -256,6 +256,26 @@ public class UriComponentsBuilderTests {
|
||||
assertEquals("a=1", result.getQuery());
|
||||
}
|
||||
|
||||
// SPR-12771
|
||||
|
||||
@Test
|
||||
public void fromHttpRequestResetsPortBeforeSettingIt() throws Exception {
|
||||
MockHttpServletRequest request = new MockHttpServletRequest();
|
||||
request.addHeader("X-Forwarded-Proto", "https");
|
||||
request.addHeader("X-Forwarded-Host", "84.198.58.199");
|
||||
request.addHeader("X-Forwarded-Port", 443);
|
||||
request.setScheme("http");
|
||||
request.setServerName("example.com");
|
||||
request.setServerPort(80);
|
||||
request.setRequestURI("/rest/mobile/users/1");
|
||||
|
||||
UriComponents result = UriComponentsBuilder.fromHttpRequest(new ServletServerHttpRequest(request)).build();
|
||||
assertEquals("https", result.getScheme());
|
||||
assertEquals("84.198.58.199", result.getHost());
|
||||
assertEquals(-1, result.getPort());
|
||||
assertEquals("/rest/mobile/users/1", result.getPath());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void path() throws URISyntaxException {
|
||||
UriComponentsBuilder builder = UriComponentsBuilder.fromPath("/foo/bar");
|
||||
|
||||
Reference in New Issue
Block a user