![Chromium:防止解壓縮 tar.gz](https://rvso.com/image/1457438/Chromium%EF%BC%9A%E9%98%B2%E6%AD%A2%E8%A7%A3%E5%A3%93%E7%B8%AE%20tar.gz.png)
最新的 Chrome 和 Chromium 似乎會在 OS X 和 Linux 上自動解壓縮 .tar.gz 檔案。當使用wget
相同的 URL 時,它顯示:
$ wget http://mydomain/dir/file.tar.gz
...
HTTP request sent, awaiting response... 200 OK
Length: ... [application/octet-stream]
...
驗證文件類型:
$ file file.tar.gz
file.tar.gz: gzip compressed data, from FAT filesystem (MS-DOS, OS/2, NT)
對使用 Chrome 或 Chromium 下載的檔案執行相同操作時:
$ file file.tar.gz
file.tar.gz: POSIX tar archive
請注意,Chrome/Chromium 顯然保留了檔案名,但對其進行了擴展(檔案大小比 wget 下載的檔案大約 4 倍)。
身為網站管理員,如何阻止 Chrome/Chromium 解壓縮檔?
更新:
根據curl -I http://mydomain/dir/file.tar.gz
我們的 Apache/Tomcat 組合響應
Content-Encoding: x-gzip
嘗試過.tar.gz
其他網站的文件不會被 Chrome 解壓縮,也不會報告Content-Encoding: x-gzip
標頭,因此似乎存在某種關係。
答案1
您的 Web 伺服器可能會發送.tar.gz
帶有標頭的文件content-encoding: gzip
,導致 Web 瀏覽器假定應用 gzip 層只是為了節省頻寬,而您真正想要發送的是存檔.tar
。 Chrome 會在另一側進行解壓縮,就像處理收到 gzip 壓縮的任何其他檔案( .html
、.js
、等)一樣.css
(但它忠實地不會修改檔案名稱)。
若要解決此問題,請確保您的 Web 伺服器提供.tar.gz
不含標頭的檔案content-encoding: gzip
。
更多資訊:https://code.google.com/p/chromium/issues/detail?id=83292
答案2
根據我們的託管提供者的說法,該標頭Content-Encoding: x-gzip
是由 Tomcat 前面的 Apache 引起的。刪除以下行:
LoadModule deflate_module modules/mod_deflate.so
從它的配置解決了這個問題。