Skip to content

Commit 18b6990

Browse files
committed
Return 415 on bad request body content-type
Issue: SPR-10982
1 parent 7bf4324 commit 18b6990

File tree

2 files changed

+15
-1
lines changed

2 files changed

+15
-1
lines changed

spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/annotation/AbstractMessageConverterMethodArgumentResolver.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
import org.springframework.core.MethodParameter;
3232
import org.springframework.core.ResolvableType;
3333
import org.springframework.http.HttpInputMessage;
34+
import org.springframework.http.InvalidMediaTypeException;
3435
import org.springframework.http.MediaType;
3536
import org.springframework.http.converter.GenericHttpMessageConverter;
3637
import org.springframework.http.converter.HttpMessageConverter;
@@ -113,7 +114,14 @@ protected <T> Object readWithMessageConverters(NativeWebRequest webRequest,
113114
protected <T> Object readWithMessageConverters(HttpInputMessage inputMessage,
114115
MethodParameter methodParam, Type targetType) throws IOException, HttpMediaTypeNotSupportedException {
115116

116-
MediaType contentType = inputMessage.getHeaders().getContentType();
117+
MediaType contentType;
118+
try {
119+
contentType = inputMessage.getHeaders().getContentType();
120+
}
121+
catch (InvalidMediaTypeException ex) {
122+
throw new HttpMediaTypeNotSupportedException(ex.getMessage());
123+
}
124+
117125
if (contentType == null) {
118126
contentType = MediaType.APPLICATION_OCTET_STREAM;
119127
}

spring-webmvc/src/test/java/org/springframework/web/servlet/mvc/method/annotation/RequestResponseBodyMethodProcessorMockTests.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -187,6 +187,12 @@ public void resolveArgumentNoContentType() throws Exception {
187187
}
188188
}
189189

190+
@Test(expected = HttpMediaTypeNotSupportedException.class)
191+
public void resolveArgumentInvalidContentType() throws Exception {
192+
this.servletRequest.setContentType("bad");
193+
processor.resolveArgument(paramRequestBodyString, mavContainer, webRequest, null);
194+
}
195+
190196
@Test
191197
public void resolveArgumentNotRequiredNoContent() throws Exception {
192198
servletRequest.setContent(null);

0 commit comments

Comments
 (0)