Browse Source

Fix ForwardedHeaderFilter with non-empty contextPath

Issue: SPR-15088
pull/1284/head
Rob Winch 9 years ago
parent
commit
df98d304fd
  1. 2
      spring-web/src/main/java/org/springframework/web/filter/ForwardedHeaderFilter.java
  2. 25
      spring-web/src/test/java/org/springframework/web/filter/ForwardedHeaderFilterTests.java

2
spring-web/src/main/java/org/springframework/web/filter/ForwardedHeaderFilter.java

@ -262,7 +262,7 @@ public class ForwardedHeaderFilter extends OncePerRequestFilter { @@ -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);

25
spring-web/src/test/java/org/springframework/web/filter/ForwardedHeaderFilterTests.java

@ -240,33 +240,10 @@ public class ForwardedHeaderFilterTests { @@ -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");

Loading…
Cancel
Save