当前位置: 首页 > 知识库问答 >
问题:

Spring boot http响应压缩对某些用户代理不起作用

温浩大
2023-03-14

我正在尝试在Spring boot web应用程序上启用http响应压缩。它适用于某些用户代理,但由于某些原因,它不适用于其他用户代理(具体情况如下)。

我的基本问题是:为什么Spring Boot中的http响应压缩(gzip)只对某些用户代理头有效,以及它是在哪里配置的。

Spring引导参考没有说任何关于它。

我准备了支持压缩的简单web应用程序:示例spring-boot-compression app,有一些集成测试验证gzip编码仅在某些情况下工作。

我将spring boot配置为:

server:
  tomcat:
    compression: on
    compressable-mime-types: text/html,text/css,application/javascript,application/json,application/font-sfnt,application/font-woff,application/font-woff2

当我尝试用curl做一些请求时:

$ curl -i -H "Accept-Encoding: gzip,deflate" http://localhost:8080
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Content-Type: application/json;charset=UTF-8
Transfer-Encoding: chunked
Content-Encoding: gzip
Vary: Accept-Encoding

我看到content-encoding:gzip头已设置。

$ curl -i -H "Accept-Encoding: gzip,deflate" -H "User-Agent: AppleWebKit" http://localhost:8080
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Content-Type: application/json;charset=UTF-8
Transfer-Encoding: chunked
Vary: Accept-Encoding
- Mozilla/5.0
- Mozilla/5.0 (Windows NT 6.1; WOW64) Chrome/46.0.2490.80 Safari/537.36
- Mozilla/5.0 (Windows NT 6.1; WOW64; rv:34.0) Firefox/34.0
- SomeUnknownBrowser
 - AppleWebKit
 - Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36
 - Mozilla/5.0 (Windows NT 6.1; WOW64; rv:34.0) Gecko/20100101 Firefox/34.0
 - Gecko/20100101

我还尝试在gzipfilter中使用压缩,它的行为完全相同。也尝试了embedded Jetty而不是Tomcat-同样的结果。

也许我只是错过了什么。

共有1个答案

安明亮
2023-03-14

您可能正在使用某种杀毒软件(可能是ESET)。尝试关闭HTTP保护。

使用Eset,您可以尝试以下内容:高级->互联网和电子邮件->网络访问保护-关闭。

 类似资料:
  • 我尝试使用FFMPEG和这个库压缩视频:https://github.com/guardianproject/android-ffmpeg-java

  • 我想用Gzip压缩我的web应用程序,我使用下面的类 压缩滤波器 更新缓存过滤器工作正常,但仍然没有gzip压缩,下面是Chrome中的响应头。 我有什么办法能让这一切成功吗?我真的需要帮助,谢谢

  • 我有一些javascript捆绑文件,非常大,大约1MB。我正在尝试使用yml文件中的以下应用程序属性打开响应压缩: 但不管用。没有压缩发生。 请求标题: ===编辑3===进一步遵循@Chimmi的建议。我已经在建议的地方设置了断点。对静态资源(js文件)的请求似乎从未在这些断点停止过。只有rest API请求才会这样做。对于这些请求,由于某种原因,内容长度为零,这导致跳过内容压缩。 由于@Ch

  • 有人对这件事有什么见解吗? 我对此进行了研究,但找不到关于这种特殊情况的信息。

  • 问题内容: 我正在使用php的功能来执行HTTP请求。为了节省带宽,我决定使用添加标题。 显然,输出一个gzip编码的字符串,所以我用来解码该编码的字符串,但是将作为参数传递的数据出错。 我知道还有另一个功能可以解压缩压缩后的数据,但是它不包含在我的PHP版本中(也许仅在SVN上可用)。 我知道cUrl可以即时解码gzip流(没有任何问题),但是有人建议我使用它而不是cUrl。 您是否知道以其他方

  • 问题内容: 我有一个用rails编写的api,它在每个请求上均以JSON响应进行响应。 响应可能很大,因此我需要使用gzip压缩JSON响应。 想知道如何在Rails控制器中执行此操作? 我加了线 在config.ru中 我还应该在呈现JSON的行中更改某些内容吗? 另外,我如何检查响应是否为gzip格式。 我从终端发出了curl请求,我只看到普通的普通JSON。 问题答案: 对于以gzip格式的