[英]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.