【发布时间】:2020-01-18 04:53:09
【问题描述】:
我遇到了一个奇怪的案例。我正在使用由几个不同服务组成的 Spring Boot 应用程序。
对于每个服务,在 application.properties 文件中添加了这些属性:
server.compression.enabled=true
server.compression.mime-types=application/json,application/xml,text/html,text/xml,text/plain,application/javascript,text/css
server.compression.min-response-size=1024
现在,每个适当的请求都包含“Accept-Encoding”标头并且响应包含“Content-Encoding”标头应该可以工作,并且应该压缩响应。
它几乎就是这样工作的,但是对于一项服务,POST 响应不包含“Content-Encoding”,即使 POST 请求包含“Accept-Encoding”。这样的响应没有被压缩,所以它不仅仅是缺少标题。获取此服务的响应/请求工作正常。其余服务的 GET/POST 请求/响应也都可以正常工作。
这个特定服务的 Spring Boot 版本是 1.5.16.RELEASE。
我应该去哪里寻找原因?是否可以仅针对 POST 响应以某种方式覆盖此设置?
更新:我还注意到在此服务的 POST 响应中,缺少“Vary: Accept-Encoding”标头。它存在于所有其他情况下。
【问题讨论】:
-
请添加您正在使用的 Spring Boot 版本。
-
1.5.16.RELEASE.
-
请求是否包含支持压缩的 MIME 类型之一?响应是否大于 1024 字节?
-
是的,请求标头:Content-Type: application/json;charset=utf-8 是的,有时甚至是兆字节
-
但是结果也是支持的 mim 类型之一吗?因为这是这里的重要部分,所以它或多或少是
Accept-Header而不是传入的Content-Type标头是导入的。重要的是生成的内容类型。
标签: java spring-boot compression http-compression content-encoding