Spring-Boot disable transfer-coding from response header
10,246
This can be achieved by explicitly adding the HttpHeaders.CONTENT_LENGTH
header like the below:
An example:
@RequestMapping(value = "/contacts", method = RequestMethod.POST)
public Map<String, ContactInfo> addContactInfo(
@RequestBody Map<String, ContactInfo> ContactInfoDto,
@RequestHeader(value = HttpHeaders.CONTENT_LENGTH, required = true) Long contentLength)
{
...
}
You may want to go through this answer on SO for more details.
Hope this helps!
Related videos on Youtube
Author by
soufrk
Updated on June 04, 2022Comments
-
soufrk over 1 year
Problem statement - a simple RESTful service in Spring-Boot (2.0.1.RELEASE, and embedded Tomcat Server) returns response like,
HTTP/1.1 200 Content-Type: application/json;charset=UTF-8 Transfer-Encoding: chunked Date: Tue, 01 May 2018 00:33:04 GMT 7d {the-json-response-anticipated} 0
After a search-and-find, I found that this is caused due to the header
Transfer-Encoding: chunked
. Tried setting the following inapplication.properties
spring.http.encoding.force=false spring.http.encoding.enabled=false
But, to no use. Any means to disable the same ?
Should I write explicit code to form a header with the parameter set asfalse
and set it to the header of the response ?-
Christopher Schultz over 5 yearsWhy do you want to disable a
chunked
response? For large responses,chunked
encoding is the only way to avoid huge buffers on the server side.
-
-
Christopher Schultz over 5 yearsI'm not sure about the mechanics, here (i.e. annotations), but yes, the proper way to avoid chunked encoding is to specify a
Content-Length
response header. -
Robert Zahm almost 5 yearsThis code will require that the caller set the content-length header to use this endpoint. I believe what is being asked for here is how to change this on the response. The accepted answer in that link looks more appropriate.