小编sso*_*cik的帖子

Spring引导http响应压缩对某些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
Run Code Online (Sandbox Code Playgroud)

当我尝试用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
Run Code Online (Sandbox Code Playgroud)

我看到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
Run Code Online (Sandbox Code Playgroud)

我用其他一些浏览器和User-Agent标题修改重复我的测试,并收到一些奇怪的结果.

这里有一些工作(响应是压缩的)User-Agent标题:

- Mozilla/5.0
- Mozilla/5.0 (Windows NT 6.1; WOW64) …
Run Code Online (Sandbox Code Playgroud)

java compression tomcat gzip spring-boot

6
推荐指数
1
解决办法
3520
查看次数

标签 统计

compression ×1

gzip ×1

java ×1

spring-boot ×1

tomcat ×1