File tree Expand file tree Collapse file tree 2 files changed +17
-1
lines changed
main/java/org/springframework/web/util
test/java/org/springframework/web/util Expand file tree Collapse file tree 2 files changed +17
-1
lines changed Original file line number Diff line number Diff line change @@ -297,7 +297,8 @@ public static UriComponentsBuilder fromHttpRequest(HttpRequest request) {
297
297
298
298
String portHeader = request .getHeaders ().getFirst ("X-Forwarded-Port" );
299
299
if (StringUtils .hasText (portHeader )) {
300
- port = Integer .parseInt (portHeader );
300
+ String [] ports = StringUtils .commaDelimitedListToStringArray (portHeader );
301
+ port = Integer .parseInt (ports [0 ]);
301
302
}
302
303
303
304
String protocolHeader = request .getHeaders ().getFirst ("X-Forwarded-Proto" );
Original file line number Diff line number Diff line change @@ -399,8 +399,23 @@ public void fromHttpRequestWithForwardedProtoAndDefaultPort() {
399
399
assertEquals ("https://84.198.58.199/mvc-showcase" , result .toString ());
400
400
}
401
401
402
+ // SPR-12813
402
403
404
+ @ Test
405
+ public void fromHttpRequestWithForwardedPortMultiValueHeader () {
406
+ MockHttpServletRequest request = new MockHttpServletRequest ();
407
+ request .setScheme ("http" );
408
+ request .setServerName ("localhost" );
409
+ request .setServerPort (9090 );
410
+ request .setRequestURI ("/mvc-showcase" );
411
+ request .addHeader ("X-Forwarded-Host" , "a.example.org" );
412
+ request .addHeader ("X-Forwarded-Port" , "80,52022" );
403
413
414
+ HttpRequest httpRequest = new ServletServerHttpRequest (request );
415
+ UriComponents result = UriComponentsBuilder .fromHttpRequest (httpRequest ).build ();
416
+
417
+ assertEquals ("http://a.example.org/mvc-showcase" , result .toString ());
418
+ }
404
419
405
420
@ Test
406
421
public void path () throws URISyntaxException {
You can’t perform that action at this time.
0 commit comments