DefaultRedirectStrategy should redirect to root if the context-relative URL does not contain the context-path.

This commit is contained in:
Michel Palourdio 2016-11-26 13:08:34 +01:00 committed by Eleftheria Stein-Kousathana
parent 1c53a7859b
commit d26f40f062
2 changed files with 19 additions and 0 deletions

View File

@ -73,6 +73,10 @@ public class DefaultRedirectStrategy implements RedirectStrategy {
return url;
}
if (!url.contains(contextPath)) {
return "";
}
// Calculate the relative URL from the fully qualified URL, minus the last
// occurrence of the scheme and base context.
url = url.substring(url.lastIndexOf("://") + 3); // strip off scheme

View File

@ -56,4 +56,19 @@ public class DefaultRedirectStrategyTests {
assertThat(response.getRedirectedUrl()).isEqualTo("remainder");
}
@Test
public void contextRelativeShouldRedirectToRootIfURLDoesNotContainContextPath()
throws Exception {
DefaultRedirectStrategy rds = new DefaultRedirectStrategy();
rds.setContextRelative(true);
MockHttpServletRequest request = new MockHttpServletRequest();
request.setContextPath("/context");
MockHttpServletResponse response = new MockHttpServletResponse();
rds.sendRedirect(request, response,
"https://redirectme.somewhere.else");
assertThat(response.getRedirectedUrl()).isEqualTo("");
}
}