From 78d32367929db8582b60fbeffea422bda63e89a9 Mon Sep 17 00:00:00 2001 From: Kevin Yue Date: Wed, 31 Aug 2022 10:57:16 -0400 Subject: [PATCH 1/2] fix: commit the response in `sendRedirect()` method --- .../web/filter/RelativeRedirectResponseWrapper.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/spring-web/src/main/java/org/springframework/web/filter/RelativeRedirectResponseWrapper.java b/spring-web/src/main/java/org/springframework/web/filter/RelativeRedirectResponseWrapper.java index 81c7e3ff7aa2..9fe58f3051b3 100644 --- a/spring-web/src/main/java/org/springframework/web/filter/RelativeRedirectResponseWrapper.java +++ b/spring-web/src/main/java/org/springframework/web/filter/RelativeRedirectResponseWrapper.java @@ -16,6 +16,8 @@ package org.springframework.web.filter; +import java.io.IOException; + import jakarta.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponseWrapper; @@ -44,9 +46,10 @@ private RelativeRedirectResponseWrapper(HttpServletResponse response, HttpStatus @Override - public void sendRedirect(String location) { + public void sendRedirect(String location) throws IOException { setStatus(this.redirectStatus.value()); setHeader(HttpHeaders.LOCATION, location); + flushBuffer(); } From 28982358fccec79d923627edf5d83a3f68d3ba20 Mon Sep 17 00:00:00 2001 From: Kevin Yue Date: Thu, 1 Sep 2022 06:02:42 -0400 Subject: [PATCH 2/2] fix: call `resetBuffer()` before redirect --- .../web/filter/RelativeRedirectResponseWrapper.java | 1 + 1 file changed, 1 insertion(+) diff --git a/spring-web/src/main/java/org/springframework/web/filter/RelativeRedirectResponseWrapper.java b/spring-web/src/main/java/org/springframework/web/filter/RelativeRedirectResponseWrapper.java index 9fe58f3051b3..9fb2b8dbf347 100644 --- a/spring-web/src/main/java/org/springframework/web/filter/RelativeRedirectResponseWrapper.java +++ b/spring-web/src/main/java/org/springframework/web/filter/RelativeRedirectResponseWrapper.java @@ -47,6 +47,7 @@ private RelativeRedirectResponseWrapper(HttpServletResponse response, HttpStatus @Override public void sendRedirect(String location) throws IOException { + resetBuffer(); setStatus(this.redirectStatus.value()); setHeader(HttpHeaders.LOCATION, location); flushBuffer();