diff --git a/spring-web/src/main/java/org/springframework/web/filter/ForwardedHeaderFilter.java b/spring-web/src/main/java/org/springframework/web/filter/ForwardedHeaderFilter.java index 57a80798aeb..a2653b5de12 100644 --- a/spring-web/src/main/java/org/springframework/web/filter/ForwardedHeaderFilter.java +++ b/spring-web/src/main/java/org/springframework/web/filter/ForwardedHeaderFilter.java @@ -262,7 +262,7 @@ public class ForwardedHeaderFilter extends OncePerRequestFilter { // Relative to Servlet container root or to current request String path; if (location.startsWith(FOLDER_SEPARATOR)) { - path = this.request.getContextPath() + location; + path = location; } else { path = StringUtils.applyRelativePath(this.request.getRequestURI(), location); diff --git a/spring-web/src/test/java/org/springframework/web/filter/ForwardedHeaderFilterTests.java b/spring-web/src/test/java/org/springframework/web/filter/ForwardedHeaderFilterTests.java index 280cffdda1e..b27a492bc53 100644 --- a/spring-web/src/test/java/org/springframework/web/filter/ForwardedHeaderFilterTests.java +++ b/spring-web/src/test/java/org/springframework/web/filter/ForwardedHeaderFilterTests.java @@ -240,33 +240,10 @@ public class ForwardedHeaderFilterTests { this.request.addHeader(X_FORWARDED_PORT, "443"); this.request.setContextPath("/context"); - String redirectedUrl = sendRedirect("/foo/bar"); + String redirectedUrl = sendRedirect("/context/foo/bar"); assertEquals("https://example.com/context/foo/bar", redirectedUrl); } - @Test - public void sendRedirectWithXForwardedPrefix() throws Exception { - this.request.addHeader(X_FORWARDED_PROTO, "https"); - this.request.addHeader(X_FORWARDED_HOST, "example.com"); - this.request.addHeader(X_FORWARDED_PORT, "443"); - this.request.addHeader(X_FORWARDED_PREFIX, "/prefix"); - - String redirectedUrl = sendRedirect("/foo/bar"); - assertEquals("https://example.com/prefix/foo/bar", redirectedUrl); - } - - @Test - public void sendRedirectWithXForwardedPrefixAndContextPath() throws Exception { - this.request.addHeader(X_FORWARDED_PROTO, "https"); - this.request.addHeader(X_FORWARDED_HOST, "example.com"); - this.request.addHeader(X_FORWARDED_PORT, "443"); - this.request.addHeader(X_FORWARDED_PREFIX, "/prefix"); - this.request.setContextPath("/context"); - - String redirectedUrl = sendRedirect("/foo/bar"); - assertEquals("https://example.com/prefix/foo/bar", redirectedUrl); - } - @Test public void sendRedirectWithRelativePath() throws Exception { this.request.addHeader(X_FORWARDED_PROTO, "https");