【问题标题】:POST responses not compressed despite Accept-Encoding Header being present in a request尽管请求中存在 Accept-Encoding 标头,但未压缩 POST 响应
【发布时间】: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


【解决方案1】:

尝试将wiremock依赖配置从compile改为testCompile。就我而言,2.22.0 版本中的wiremock(带有compile)导致了这个问题。

【讨论】:

    猜你喜欢
    • 2021-11-09
    • 2013-09-29
    • 2015-12-13
    • 2011-12-20
    • 1970-01-01
    • 2022-01-09
    • 2017-10-19
    • 2021-08-13
    • 1970-01-01
    相关资源
    最近更新 更多