File tree Expand file tree Collapse file tree 2 files changed +21
-1
lines changed
main/java/org/springframework/web/util
test/java/org/springframework/web/util Expand file tree Collapse file tree 2 files changed +21
-1
lines changed Original file line number Diff line number Diff line change @@ -303,7 +303,8 @@ public static UriComponentsBuilder fromHttpRequest(HttpRequest request) {
303303
304304 String protocolHeader = request .getHeaders ().getFirst ("X-Forwarded-Proto" );
305305 if (StringUtils .hasText (protocolHeader )) {
306- scheme = protocolHeader ;
306+ String [] protocols = StringUtils .commaDelimitedListToStringArray (protocolHeader );
307+ scheme = protocols [0 ];
307308 }
308309
309310 builder .scheme (scheme );
Original file line number Diff line number Diff line change @@ -417,6 +417,25 @@ public void fromHttpRequestWithForwardedPortMultiValueHeader() {
417417 assertEquals ("http://a.example.org/mvc-showcase" , result .toString ());
418418 }
419419
420+ // SPR-12816
421+
422+ @ Test
423+ public void fromHttpRequestWithForwardedProtoMultiValueHeader () {
424+ MockHttpServletRequest request = new MockHttpServletRequest ();
425+ request .setScheme ("http" );
426+ request .setServerName ("localhost" );
427+ request .setServerPort (8080 );
428+ request .setRequestURI ("/mvc-showcase" );
429+ request .addHeader ("X-Forwarded-Host" , "a.example.org" );
430+ request .addHeader ("X-Forwarded-Port" , "443" );
431+ request .addHeader ("X-Forwarded-Proto" , "https,https" );
432+
433+ HttpRequest httpRequest = new ServletServerHttpRequest (request );
434+ UriComponents result = UriComponentsBuilder .fromHttpRequest (httpRequest ).build ();
435+
436+ assertEquals ("https://a.example.org/mvc-showcase" , result .toString ());
437+ }
438+
420439 @ Test
421440 public void path () throws URISyntaxException {
422441 UriComponentsBuilder builder = UriComponentsBuilder .fromPath ("/foo/bar" );
You can’t perform that action at this time.
0 commit comments