diff --git a/web/src/main/java/org/springframework/security/web/savedrequest/SavedRequestAwareWrapper.java b/web/src/main/java/org/springframework/security/web/savedrequest/SavedRequestAwareWrapper.java index 200578d595..81535bf00a 100644 --- a/web/src/main/java/org/springframework/security/web/savedrequest/SavedRequestAwareWrapper.java +++ b/web/src/main/java/org/springframework/security/web/savedrequest/SavedRequestAwareWrapper.java @@ -32,6 +32,7 @@ import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequestWrapper; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.springframework.http.HttpHeaders; /** * Provides request parameters, headers and cookies from either an original request or a @@ -141,6 +142,11 @@ class SavedRequestAwareWrapper extends HttpServletRequestWrapper { return this.savedRequest.getMethod(); } + @Override + public String getContentType() { + return getHeader(HttpHeaders.CONTENT_TYPE); + } + /** * If the parameter is available from the wrapped request then the request has been * forwarded/included to a URL with parameters, either supplementing or overriding the diff --git a/web/src/test/java/org/springframework/security/web/savedrequest/SavedRequestAwareWrapperTests.java b/web/src/test/java/org/springframework/security/web/savedrequest/SavedRequestAwareWrapperTests.java index 9f340ea736..ce4f0db67e 100644 --- a/web/src/test/java/org/springframework/security/web/savedrequest/SavedRequestAwareWrapperTests.java +++ b/web/src/test/java/org/springframework/security/web/savedrequest/SavedRequestAwareWrapperTests.java @@ -24,6 +24,7 @@ import java.util.Locale; import jakarta.servlet.http.Cookie; import org.junit.jupiter.api.Test; +import org.springframework.http.MediaType; import org.springframework.mock.web.MockHttpServletRequest; import org.springframework.security.web.PortResolverImpl; @@ -169,4 +170,13 @@ public class SavedRequestAwareWrapperTests { assertThat(wrapper.getIntHeader("nonexistent")).isEqualTo(-1); } + @Test + public void correctContentTypeIsReturned() { + MockHttpServletRequest request = new MockHttpServletRequest("PUT", "/notused"); + request.setContentType(MediaType.APPLICATION_FORM_URLENCODED_VALUE); + + SavedRequestAwareWrapper wrapper = createWrapper(request, new MockHttpServletRequest("GET", "/notused")); + assertThat(wrapper.getContentType()).isEqualTo(MediaType.APPLICATION_FORM_URLENCODED_VALUE); + } + }