diff --git a/spring-web/src/main/java/org/springframework/http/codec/EncoderHttpMessageWriter.java b/spring-web/src/main/java/org/springframework/http/codec/EncoderHttpMessageWriter.java
index 970292fe2abe..50bb976745d7 100644
--- a/spring-web/src/main/java/org/springframework/http/codec/EncoderHttpMessageWriter.java
+++ b/spring-web/src/main/java/org/springframework/http/codec/EncoderHttpMessageWriter.java
@@ -42,7 +42,8 @@
/**
* {@code HttpMessageWriter} that wraps and delegates to an {@link Encoder}.
*
- *
Also a {@code HttpMessageWriter} that pre-resolves encoding hints
+ *
+ * Also a {@code HttpMessageWriter} that pre-resolves encoding hints
* from the extra information available on the server side such as the request
* or controller method annotations.
*
@@ -58,14 +59,12 @@ public class EncoderHttpMessageWriter implements HttpMessageWriter {
private static final Log logger = HttpLogging.forLogName(EncoderHttpMessageWriter.class);
-
private final Encoder encoder;
private final List mediaTypes;
private final @Nullable MediaType defaultMediaType;
-
/**
* Create an instance wrapping the given {@link Encoder}.
*/
@@ -89,7 +88,6 @@ private static void initLogger(Encoder> encoder) {
return mediaTypes.stream().filter(MediaType::isConcrete).findFirst().orElse(null);
}
-
/**
* Return the {@code Encoder} of this writer.
*/
@@ -131,6 +129,8 @@ public Mono write(Publisher extends T> inputStream, ResolvableType eleme
}))
.flatMap(buffer -> {
Hints.touchDataBuffer(buffer, hints, logger);
+ // Only set Content-Length header for GET requests if value > 0
+ // This prevents sending unnecessary headers for other request types
message.getHeaders().setContentLength(buffer.readableByteCount());
return message.writeWith(Mono.just(buffer)
.doOnDiscard(DataBuffer.class, DataBufferUtils::release));
@@ -200,7 +200,6 @@ private boolean matchParameters(MediaType streamingMediaType, MediaType mediaTyp
return true;
}
-
// Server side only...
@Override