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) {
303
303
304
304
String protocolHeader = request .getHeaders ().getFirst ("X-Forwarded-Proto" );
305
305
if (StringUtils .hasText (protocolHeader )) {
306
- scheme = protocolHeader ;
306
+ String [] protocols = StringUtils .commaDelimitedListToStringArray (protocolHeader );
307
+ scheme = protocols [0 ];
307
308
}
308
309
309
310
builder .scheme (scheme );
Original file line number Diff line number Diff line change @@ -417,6 +417,25 @@ public void fromHttpRequestWithForwardedPortMultiValueHeader() {
417
417
assertEquals ("http://a.example.org/mvc-showcase" , result .toString ());
418
418
}
419
419
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
+
420
439
@ Test
421
440
public void path () throws URISyntaxException {
422
441
UriComponentsBuilder builder = UriComponentsBuilder .fromPath ("/foo/bar" );
You can’t perform that action at this time.
0 commit comments