有没有办法使用Javascript使用浏览器的本机gzip解压缩?

时间:2016-03-23 17:40:58

标签: javascript gzip

后端服务器使用gzip文件进行响应但没有 Content-Encoding: gzip header。而且我无法控制服务器,因此无法处理问题服务器端。

我现在需要的是使用javascript解压缩gzip压缩文件。

我找到了这个优秀的图书馆,可以帮助我做到这一点:http://nodeca.github.io/pako/

但我不想添加额外的库只是为了解压缩文件。我觉得应该有一种方法可以使用浏览器的本机功能来解压缩。我对么?如果我错了,有人可以解释为什么这个浏览器功能不作为JavaScript API公开吗?有没有办法在javascript中解压缩文件而不添加额外的库?

1 个答案:

答案 0 :(得分:1)

我觉得应该有一种方法可以使用浏览器的本机功能来解压缩。如果我错了,有人可以解释为什么这个浏览器功能不会作为javascript API公开吗?

不,不应该,除非是w3c标准,否则不是。关于gzip压缩的唯一标准是an HTTP standard

我真的相信它不会成为标准因为有数以千计的算法(用于压缩,加密等)你可能想要使用它们并且浏览器无法处理所有这些算法;为一个算法创建接口而不为另一个算法创建接口也是不公平的

HTTP协议是一种例外。这里的压缩是为了让数百万人的生活更轻松。 HTTP是Web性能的瓶颈,所以只要压缩可用,我就无法想象当你在其他地方需要在JavaScript中使用压缩时。我知道的唯一情况是压缩localStorage / indexedDB中的项目,但即使gzip也无效,因为它不会产生UTF-16输出。

这就是为什么这不符合标准的原因,这就是为什么它很可能不会出现在那里的原因。

您的特定情况是服务器端实现错误。使用没有合适标题的压缩输出确实有气味。要么不使用压缩,要么正确。

有没有办法在不添加额外库的情况下在javascript中解压缩文件?

实际上除此之外还有一个可能的解决方案:创建一个浏览器扩展,在服务器响应中注入一个合适的头,你不需要一个库,但需要将扩展​​分发给用户。可能更糟,但仍然可以工作。