Browse Source

Fix ForwardedHeaderFilter preserves semicolon content

Previously a requestURI that contained ';' would have the value incorrectly stripped out when using
ForwardedHeaderFilter.

This commit ensures that the ';' is preserved when using ForwardedHeaderFilter.

Issue: SPR-15428
pull/1391/head
Rob Winch 9 years ago
parent
commit
95099fd709
  1. 1
      spring-web/src/main/java/org/springframework/web/filter/ForwardedHeaderFilter.java
  2. 11
      spring-web/src/test/java/org/springframework/web/filter/ForwardedHeaderFilterTests.java

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

@ -74,6 +74,7 @@ public class ForwardedHeaderFilter extends OncePerRequestFilter { @@ -74,6 +74,7 @@ public class ForwardedHeaderFilter extends OncePerRequestFilter {
public ForwardedHeaderFilter() {
this.pathHelper = new UrlPathHelper();
this.pathHelper.setUrlDecode(false);
this.pathHelper.setRemoveSemicolonContent(false);
}

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

@ -171,6 +171,17 @@ public class ForwardedHeaderFilterTests { @@ -171,6 +171,17 @@ public class ForwardedHeaderFilterTests {
assertEquals("/", actual.getRequestURI());
}
@Test
public void requestUriPreserveSemicolonContent() throws Exception {
this.request.setContextPath("");
this.request.setRequestURI("/path;a=b/with/semicolon");
HttpServletRequest actual = filterAndGetWrappedRequest();
assertEquals("", actual.getContextPath());
assertEquals("/path;a=b/with/semicolon", actual.getRequestURI());
assertEquals("http://localhost/path;a=b/with/semicolon", actual.getRequestURL().toString());
}
@Test
public void caseInsensitiveForwardedPrefix() throws Exception {
this.request = new MockHttpServletRequest() {

Loading…
Cancel
Save