X-Forwarded-Ssl is listed in ForwardedHeaderFilter

Issue: SPR-16863
This commit is contained in:
Rossen Stoyanchev
2018-05-25 13:39:37 -04:00
parent d77797f42c
commit c7c3e5585b
4 changed files with 32 additions and 1 deletions

View File

@@ -48,6 +48,7 @@ public class ForwardedHeaderFilterTests {
private static final String X_FORWARDED_HOST = "x-forwarded-host";
private static final String X_FORWARDED_PORT = "x-forwarded-port";
private static final String X_FORWARDED_PREFIX = "x-forwarded-prefix";
private static final String X_FORWARDED_SSL = "x-forwarded-ssl";
private final ForwardedHeaderFilter filter = new ForwardedHeaderFilter();
@@ -221,6 +222,7 @@ public class ForwardedHeaderFilterTests {
testShouldFilter(X_FORWARDED_HOST);
testShouldFilter(X_FORWARDED_PORT);
testShouldFilter(X_FORWARDED_PROTO);
testShouldFilter(X_FORWARDED_SSL);
}
private void testShouldFilter(String headerName) {
@@ -263,6 +265,7 @@ public class ForwardedHeaderFilterTests {
this.request.addHeader(X_FORWARDED_PROTO, "https");
this.request.addHeader(X_FORWARDED_HOST, "84.198.58.199");
this.request.addHeader(X_FORWARDED_PORT, "443");
this.request.addHeader(X_FORWARDED_SSL, "on");
this.request.addHeader("foo", "bar");
this.filter.setRemoveOnly(true);
@@ -278,6 +281,30 @@ public class ForwardedHeaderFilterTests {
assertNull(actual.getHeader(X_FORWARDED_PROTO));
assertNull(actual.getHeader(X_FORWARDED_HOST));
assertNull(actual.getHeader(X_FORWARDED_PORT));
assertNull(actual.getHeader(X_FORWARDED_SSL));
assertEquals("bar", actual.getHeader("foo"));
}
@Test
public void forwardedRequestWithSsl() throws Exception {
this.request.setRequestURI("/mvc-showcase");
this.request.addHeader(X_FORWARDED_SSL, "on");
this.request.addHeader(X_FORWARDED_HOST, "84.198.58.199");
this.request.addHeader(X_FORWARDED_PORT, "443");
this.request.addHeader("foo", "bar");
this.filter.doFilter(this.request, new MockHttpServletResponse(), this.filterChain);
HttpServletRequest actual = (HttpServletRequest) this.filterChain.getRequest();
assertEquals("https://84.198.58.199/mvc-showcase", actual.getRequestURL().toString());
assertEquals("https", actual.getScheme());
assertEquals("84.198.58.199", actual.getServerName());
assertEquals(443, actual.getServerPort());
assertTrue(actual.isSecure());
assertNull(actual.getHeader(X_FORWARDED_SSL));
assertNull(actual.getHeader(X_FORWARDED_HOST));
assertNull(actual.getHeader(X_FORWARDED_PORT));
assertEquals("bar", actual.getHeader("foo"));
}

View File

@@ -51,7 +51,8 @@ public class ForwardedHeaderFilterTests {
.header("X-Forwarded-Host", "example.com")
.header("X-Forwarded-Port", "8080")
.header("X-Forwarded-Proto", "http")
.header("X-Forwarded-Prefix", "prefix"));
.header("X-Forwarded-Prefix", "prefix")
.header("X-Forwarded-Ssl", "on"));
this.filter.setRemoveOnly(true);
this.filter.filter(exchange, this.filterChain).block(Duration.ZERO);
@@ -63,6 +64,7 @@ public class ForwardedHeaderFilterTests {
assertFalse(result.containsKey("X-Forwarded-Port"));
assertFalse(result.containsKey("X-Forwarded-Proto"));
assertFalse(result.containsKey("X-Forwarded-Prefix"));
assertFalse(result.containsKey("X-Forwarded-Ssl"));
}
@Test