最近在处理Chrome
上的一个问题这使得无法正确保存压缩的 gzip
文件。
这篇文章描述了根本问题:Downloaded Gzip seems to be currupted (Chrome)
如链接中所述,该文件已在 Firefox 中正确下载,因为 AJAX
中的 blob接收到的响应是 gzip 编码的,因此正确保存为 .gz
文件。但是当Chrome接收到blob数据时,会自动解压,得到纯文本(UTF-8
编码)而不是gzip
我们正在关注的编码。这使得保存的文件被破坏,因为它被保存为 UTF-8
应该被 gzip 压缩的文件中的编码 blob。
经过一番研究,我终于找到了问题的原因:显然当content-encoding: gzip
在服务器响应中指定了 header,Chrome 会自动解压文件,假设使用 gzip
的主要原因是压缩,只是出于节省带宽的目的。这个问题在以下帖子中有更详尽的描述:Chromium: prevent unpacking tar.gz
在那个帖子中 gzip
启用压缩以包装 .tar
文件,但是在我的情况下,gzip 压缩下没有文件(我使用 gzip
直接将数据写入服务器端的 gzip python module
文件)。因此,当 Chrome
解压 gzip
,只有纯文本。我试图明确发送响应而不指定 content-encoding
header ,但似乎 Chrome 会自动检测编码。
无论如何我可以禁用Chromes的gzip
自动解压?
最佳答案
回答。将新的自定义 header 接受编码设置为:空值或。 gzip;q=0,deflate;q=0 应该可以工作。
关于javascript - 禁用 Chrome 的 gzip 自动解压,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68112512/