Spring-Boot 禁用响应头中的传输编码

sou*_*frk 5 tomcat http-headers spring-boot spring-rest

问题陈述 - Spring-Boot(2.0.1.RELEASE 和嵌入式 Tomcat 服务器)中的一个简单的 RESTful 服务返回如下响应:

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
Run Code Online (Sandbox Code Playgroud)

经过一番查找,发现这是由于 header 引起的Transfer-Encoding: chunked。尝试设置以下内容application.properties

spring.http.encoding.force=false
spring.http.encoding.enabled=false
Run Code Online (Sandbox Code Playgroud)

但是,没有用。有什么方法可以禁用相同的功能吗?
我是否应该编写显式代码来形成参数设置为的标头false并将其设置为响应的标头?

N00*_*mer 2

这可以通过显式添加标头来实现,HttpHeaders.CONTENT_LENGTH如下所示:

一个例子:

@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)
{ 
    ... 
}
Run Code Online (Sandbox Code Playgroud)

您可能想仔细阅读此答案以了解更多详细信息。

希望这可以帮助!