Add ForwardedHeaderFilter requestOnly
Add an option for ForwardedHeaderFilter to only process the HttpServletRequest. This means that HttpServletResponse.sendRedirect will only work when the application is conifgured to use relative redirects using Servlet Container specific setup. Issue: SPR-15717
This commit is contained in:
committed by
Rossen Stoyanchev
parent
147368eccc
commit
5f868b493a
@@ -403,6 +403,26 @@ public class ForwardedHeaderFilterTests {
|
||||
assertEquals("../foo/bar", redirectedUrl);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void sendRedirectWhenRequestOnlyAndXForwardedThenUsesRelativeRedirects() 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.filter.setRequestOnly(true);
|
||||
|
||||
String location = sendRedirect("/a");
|
||||
|
||||
assertEquals("/a", location);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void sendRedirectWhenRequestOnlyAndNoXForwardedThenUsesRelativeRedirects() throws Exception {
|
||||
this.filter.setRequestOnly(true);
|
||||
|
||||
String location = sendRedirect("/a");
|
||||
|
||||
assertEquals("/a", location);
|
||||
}
|
||||
|
||||
private String sendRedirect(final String location) throws ServletException, IOException {
|
||||
MockHttpServletResponse response = doWithFiltersAndGetResponse(this.filter, new OncePerRequestFilter() {
|
||||
|
||||
Reference in New Issue
Block a user