Skip to content

Commit 95099fd

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 f65e1ed commit 95099fd

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
@@ -171,6 +171,17 @@ public void requestUriRootUrl() throws Exception {
171171
assertEquals("/", actual.getRequestURI());
172172
}
173173

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

0 commit comments

Comments
 (0)