2015-11-06 102 views
3

我試圖在Spring引導web應用程序上啓用http響應壓縮。 它適用於某些用戶代理,並且出於某種原因不適用於其他用戶(以下特定情況)。Spring引導http響應壓縮對某些用戶代理不起作用

我的基本問題是: 爲什麼Spring Boot中的http響應壓縮(gzip)僅適用於某些User-Agent標頭以及它的配置位置。

Spring boot reference對此沒有任何說明。

我準備了啓用壓縮的簡單網絡應用程序:sample 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 -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 - 結果相同。

也許我只是想念一些東西。

回答

7

您可能正在使用某種防病毒軟件(也許是ESET)。嘗試關閉HTTP保護。

使用Eset,您可以嘗試如下所示:高級 - > Internet和電子郵件 - > Web訪問保護 - 關閉。

+0

你的答案是正確的。問題不在服務器端,而是在我的客戶端計算機上(帶有ESET防病毒軟件的Windows 7)。事實證明,這個響應(用Wireshark進行檢查)正在被gzip接收,並且在網絡接口na瀏覽器「某事」之間的某處解壓縮了它。 這是'某事'是ESET。 – ssobocik

+0

****** ESET!當訪問本地主機地址時,MF毫無意義的「安全」! –

+0

但是它與AppleWebKit有什麼關係?我可以(不情願)接受ESET堅持自己的觀點,但僅僅爲了AppleWebKit?!!!沒有道理。 – ianbeks

0

這爲我工作與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