【发布时间】:2013-09-28 10:00:17
【问题描述】:
我创建了一个 HTTP 端点(Java 中的 REST、Spring Framework、Apache Tomcat),其中 HTTP 响应的标题为“Transfer-Encoding: chunked”。不知道是servlet还是服务器创建的。
我不希望端点响应该标头。 是否可以强制它不发送该标头?
【问题讨论】:
标签: http rest servlets chunked transfer-encoding
我创建了一个 HTTP 端点(Java 中的 REST、Spring Framework、Apache Tomcat),其中 HTTP 响应的标题为“Transfer-Encoding: chunked”。不知道是servlet还是服务器创建的。
我不希望端点响应该标头。 是否可以强制它不发送该标头?
【问题讨论】:
标签: http rest servlets chunked transfer-encoding
这可能是因为响应大于响应缓冲区而创建的,因此在响应完成之前运行时被强制刷新。由于 headers 必须在响应之前发送,并且Content-Length header 是未知的,所以它设置了Transfer-Encoding: chunked。
您可以为 Tomcat 连接器设置输出缓冲区大小:see here,属性socketBuffer 用于标准,socket.appWriteBufSize 用于 NIO。这设置了整个 servlet 容器的缓冲区大小,可能不是您想要的。
您可以使用 servlet 过滤器拦截需要更大缓冲区的特定 URL,并使用 response.setBufferSize(NNN)。
【讨论】: