diff --git a/spring-web/src/main/java/org/springframework/http/server/ServletServerHttpResponse.java b/spring-web/src/main/java/org/springframework/http/server/ServletServerHttpResponse.java index 7ec872f05b..875e5bd312 100644 --- a/spring-web/src/main/java/org/springframework/http/server/ServletServerHttpResponse.java +++ b/spring-web/src/main/java/org/springframework/http/server/ServletServerHttpResponse.java @@ -171,13 +171,15 @@ public class ServletServerHttpResponse implements ServerHttpResponse { } @Override + @Nullable public List get(Object key) { Assert.isInstanceOf(String.class, key, "Key must be a String-based header name"); String headerName = (String) key; if (headerName.equalsIgnoreCase(CONTENT_TYPE)) { // Content-Type is written as an override so don't merge - return Collections.singletonList(getFirst(headerName)); + String value = getFirst(headerName); + return (value != null ? Collections.singletonList(value) : null); } Collection values1 = servletResponse.getHeaders(headerName); diff --git a/spring-web/src/test/java/org/springframework/http/server/ServletServerHttpResponseTests.java b/spring-web/src/test/java/org/springframework/http/server/ServletServerHttpResponseTests.java index efdf1bf691..34a40016ac 100644 --- a/spring-web/src/test/java/org/springframework/http/server/ServletServerHttpResponseTests.java +++ b/spring-web/src/test/java/org/springframework/http/server/ServletServerHttpResponseTests.java @@ -75,6 +75,19 @@ class ServletServerHttpResponseTests { assertThat(mockResponse.getCharacterEncoding()).as("Invalid Content-Type").isEqualTo("UTF-8"); } + @Test + void getHeadersWithNoContentType() { + this.response = new ServletServerHttpResponse(this.mockResponse); + assertThat(this.response.getHeaders().get(HttpHeaders.CONTENT_TYPE)).isNull(); + } + + @Test + void getHeadersWithContentType() { + this.mockResponse.setContentType(MediaType.TEXT_PLAIN_VALUE); + this.response = new ServletServerHttpResponse(this.mockResponse); + assertThat(this.response.getHeaders().get(HttpHeaders.CONTENT_TYPE)).containsExactly(MediaType.TEXT_PLAIN_VALUE); + } + @Test void preExistingHeadersFromHttpServletResponse() { String headerName = "Access-Control-Allow-Origin";