最近,我遇到了一个关于Chrome
的问题,不能正确保存压缩的gzip
文件。
这个根源问题在这篇帖子中描述:Downloaded Gzip seems to be currupted (Chrome)
正如链接所述,在Firefox中正确下载文件,因为AJAX
响应接收到的blob是gzip编码的,因此正确保存为.gz
文件。但是,在Chrome中接收blob数据时,它会自动解压缩,获取纯文本(UTF-8
编码)而不是我们寻找的gzip
编码。这使得保存的文件损坏了,因为它是将UTF-8
编码的blob保存在一个应该被压缩的文件中。
经过一些研究,我终于找到了问题的原因: 显然,当服务器响应中指定content-encoding: gzip
头时,Chrome会自动解压缩文件,假设使用gzip
压缩的主要原因只是为了节省带宽。这个问题更详细地描述在以下帖子中:Chromium: prevent unpacking tar.gz
在那篇文章中,gzip
压缩被启用来包装一个.tar
文件,然而在我的情况下,没有一个文件位于gzip压缩之下(我直接在服务器端使用gzip python module
编写数据到gzip文件)。因此,当Chrome解压缩gzip
时,只有纯文本。我尝试显式地发送响应而不指定content-encoding
头,但似乎Chrome自动检测到了编码。
有没有办法禁用Chrome的gzip
自动解压缩?