提交 f42c53d9 编写于 作者: R Rossen Stoyanchev

Support comma-separated X-Forwarded-Proto

Issue: SPR-12816
上级 151e96ca
......@@ -303,7 +303,8 @@ public class UriComponentsBuilder implements Cloneable {
String protocolHeader = request.getHeaders().getFirst("X-Forwarded-Proto");
if (StringUtils.hasText(protocolHeader)) {
scheme = protocolHeader;
String[] protocols = StringUtils.commaDelimitedListToStringArray(protocolHeader);
scheme = protocols[0];
}
builder.scheme(scheme);
......
......@@ -417,6 +417,25 @@ public class UriComponentsBuilderTests {
assertEquals("http://a.example.org/mvc-showcase", result.toString());
}
// SPR-12816
@Test
public void fromHttpRequestWithForwardedProtoMultiValueHeader() {
MockHttpServletRequest request = new MockHttpServletRequest();
request.setScheme("http");
request.setServerName("localhost");
request.setServerPort(8080);
request.setRequestURI("/mvc-showcase");
request.addHeader("X-Forwarded-Host", "a.example.org");
request.addHeader("X-Forwarded-Port", "443");
request.addHeader("X-Forwarded-Proto", "https,https");
HttpRequest httpRequest = new ServletServerHttpRequest(request);
UriComponents result = UriComponentsBuilder.fromHttpRequest(httpRequest).build();
assertEquals("https://a.example.org/mvc-showcase", result.toString());
}
@Test
public void path() throws URISyntaxException {
UriComponentsBuilder builder = UriComponentsBuilder.fromPath("/foo/bar");
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册