我正在尝试修复问题。 http response-header:Transfer-Encoding: chunked
我们在spring-boot + embedded-tomcat中有一个CXF-SOAP web服务。
SOAP响应获得Content-Length
标头,没有Transfer-Encoding
....
这是正常的,我想?
不幸的是,我们有一些遗留客户端黑客,
这似乎只适用于Transfer-Encoding: chunked
而没有Content-Length
。
有没有办法强制服务器应用程序回复Transfer-Encoding: chunked
?
究竟是什么决定了生成哪种响应格式?
它是否可以配置?
答案 0 :(得分:1)
通过设置BufferSize响应。
response.setBufferSize()设置响应大小的Content-Length标头。一旦响应大小超出bufferSize,它将回退到Transfer-Encoding:Chunked。缓冲区大小应设置为适当的值。将其设置为更高的值将在刷新之前缓冲内存中的所有响应。因此,该值应设置为乐观的大小。
默认情况下,Tomcat缓冲区大小设置为8K
其他选项:您可以为您的服务添加响应过滤器,也可以在您想要的套装标题中添加。
答案 1 :(得分:1)
服务器应用程序会响应您希望它响应,具体取决于请求http标头。
如果请求http标头包含:
Accept-Encoding: chunked
且仅chunked
,服务器应用将使用标头和内容Transfer-Encoding: chunked
进行回复。
因此,如果无法生成指示客户端功能的正确http请求,则可以添加反向代理,通过更改或添加Accept-Encoding: chunked
标头来修改请求。