Skip to content

Commit e92e65f

Browse files
committed
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
1 parent 96bfe7d commit e92e65f

File tree

2 files changed

+12
-0
lines changed

2 files changed

+12
-0
lines changed

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ public class ForwardedHeaderFilter extends OncePerRequestFilter {
7474
public ForwardedHeaderFilter() {
7575
this.pathHelper = new UrlPathHelper();
7676
this.pathHelper.setUrlDecode(false);
77+
this.pathHelper.setRemoveSemicolonContent(false);
7778
}
7879

7980

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

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,17 @@ public void requestUriRootUrl() throws Exception {
169169
assertEquals("/", actual.getRequestURI());
170170
}
171171

172+
@Test
173+
public void requestUriPreserveSemicolonContent() throws Exception {
174+
this.request.setContextPath("");
175+
this.request.setRequestURI("/path;a=b/with/semicolon");
176+
HttpServletRequest actual = filterAndGetWrappedRequest();
177+
178+
assertEquals("", actual.getContextPath());
179+
assertEquals("/path;a=b/with/semicolon", actual.getRequestURI());
180+
assertEquals("http://localhost/path;a=b/with/semicolon", actual.getRequestURL().toString());
181+
}
182+
172183
@Test
173184
public void caseInsensitiveForwardedPrefix() throws Exception {
174185
this.request = new MockHttpServletRequest() {

0 commit comments

Comments
 (0)