Append query on redirect in UrlHandlerFilter

Closes gh-35873
This commit is contained in:
rstoyanchev
2025-12-05 12:35:32 +00:00
parent e45727d4fa
commit cee185ce3b
4 changed files with 24 additions and 7 deletions
@@ -299,9 +299,14 @@ public final class UrlHandlerFilter extends OncePerRequestFilter {
public void handleInternal(HttpServletRequest request, HttpServletResponse response, FilterChain chain)
throws IOException {
String location = trimTrailingSlash(request.getRequestURI());
if (StringUtils.hasText(request.getQueryString())) {
location += "?" + request.getQueryString();
}
response.resetBuffer();
response.setStatus(this.httpStatus.value());
response.setHeader(HttpHeaders.LOCATION, trimTrailingSlash(request.getRequestURI()));
response.setHeader(HttpHeaders.LOCATION, location);
response.flushBuffer();
}
}
@@ -290,9 +290,16 @@ public final class UrlHandlerFilter implements WebFilter {
@Override
public Mono<Void> handleInternal(ServerWebExchange exchange, WebFilterChain chain) {
ServerHttpRequest request = exchange.getRequest();
String query = request.getURI().getRawQuery();
String location = trimTrailingSlash(request);
if (StringUtils.hasText(query)) {
location += "?" + query;
}
ServerHttpResponse response = exchange.getResponse();
response.setStatusCode(this.statusCode);
response.getHeaders().set(HttpHeaders.LOCATION, trimTrailingSlash(exchange.getRequest()));
response.getHeaders().set(HttpHeaders.LOCATION, location);
return Mono.empty();
}
}