[英]Spring boot http response compression doesn't work for some User-Agents
我正在尝试在Spring启动Web应用程序上启用http响应压缩。 它适用于某些用户代理,并且由于某些原因不适用于其他用户代理(下面的特定情况)。
我的基本问题是: 为什么Spring Boot中的http响应压缩(gzip)仅适用于某些User-Agent标头及其配置位置。
Spring引用引用没有说明任何事情。
我准备了启用压缩的简单Web应用程序: 示例spring-boot-compression app有一些集成测试可以验证gzip编码仅适用于某些情况。
我配置了弹簧靴:
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
标头已设置。
当我将User-Agent
设置为AppleWebKit(或IE等其他浏览器)时,它不会压缩:
$ 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
我用其他一些浏览器和User-Agent
标题修改重复我的测试,并收到一些奇怪的结果。
这里有一些工作(响应被压缩) User-Agent
标题:
- 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
一些不工作的User-Agent
标头:
- 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
压缩,它的行为完全相同。 还试过嵌入式Jetty而不是Tomcat - 结果相同。
也许我只是缺少一些东西。
您可能正在使用某种防病毒软件(可能是ESET)。 尝试关闭HTTP保护。
使用Eset,您可以尝试类似:高级 - > Internet和电子邮件 - > Web访问保护 - 关闭。
这适用于Spring 1.4
server.compression.enabled: true
server.compression.mime-types: application/json,application/xml,text/html,text/xml,text/plain,text/css,application/javascript
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.