尽管 Accept-Encoding Header 存在于请求中,但 POST 响应未压缩

POST responses not compressed despite Accept-Encoding Header being present in a request

我遇到了一个奇怪的案例。我正在使用 Spring 启动应用程序,它包含一些不同的服务。

对于每个服务,在 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" header 并且响应包含 "Content-Encoding" header 应该可以工作,并且响应应该被压缩。

它几乎是这样工作的,但是对于一项服务 POST 响应不包含 "Content-Encoding",即使 POST 请求包含 "Accept-Encoding"。此类响应未压缩,因此不仅仅是缺少 headers。 GET responses/requests 此服务工作正常。其余服务的 GET/POST requests/responses 也都可以正常工作。

此特定服务的 Spring 引导版本是 1.5。16.RELEASE。

我应该去哪里找原因?是否可以仅针对 POST 响应以某种方式覆盖此设置?

更新:我还注意到在该服务的 POST 响应中,缺少 "Vary: Accept-Encoding" header。它存在于所有其他情况下。

尝试将 wiremock 依赖配置从 compile 更改为 testCompile。在我的例子中,2.22.0 版本的 wiremock(compile)导致了这个问题。