如何在javascript中解压缩gzip xhr响应
How to decompress gzip xhr response in javascript
我有一个来自web请求的gzip响应,我需要在JavaScript中解压缩(实际上,在AJAX调用的成功函数中-我的代码在无头浏览器中运行,并且没有完整浏览器提供的内置gzip处理支持)。我一直在寻找答案,但我有点难住了。
理想情况下,我希望代码是:
var my_decompressed_string = someGzipDecompressor(xhr.responseText);
我发现,我认为是在JavaScript实现Gzip的答案,但这可能不是我所希望的答案。当尝试通过以下代码片段
使用上述jsxcompressor库时var my_decompressed_string = JXG.decompress(xhr.responseText);
…
TypeError: 'undefined' is not an object (evaluating '(new JXG.Util.Unzip(JXG.Util.Base64.decodeAsArray(str))).unzip()[0][0]')
更详细地查看该函数,如果我分解由decompress()函数执行的代码,我得到了我认为是由内部部分返回的好东西…
JXG.Util.Base64.decodeAsArray(xhr.responseText)
…但undefined
返回外部…
JXG.Util.Unzip( ... )
所以,这可能是一个死胡同,当然,但如果有人知道一种方式,我原来的问题应该是可能的,或者有任何更好的运气与jsxcompressor.js我将感激不尽。
当然,我可以强制我的AJAX请求返回一个'deflate'响应,但是页面的大小(我无法控制)相当大,请求gzip是为了加快我的页面加载时间。
jsxcompressor.js需要base64编码的字符串来解压,你应该使用:
var my_decompressed_string = JXG.decompress(btoa(xhr.responseText));
如果你的无头浏览器不支持btoa,那么你应该使用base64编码库,如果你的节点或iojs有大量的base64 NPM包。
相关文章:
- 中止POST XHR可靠
- Dojo XHR将200 OK视为错误
- Chrome扩展:XHR后关闭窗口
- XHR不适用于聊天应用程序
- 是否可以缓存可下载的文件,并在XHR和非XHR请求之间共享该缓存
- 通过XHR请求将MYSQL数组从PHP返回到Javascript
- 流星和铁路由器中的gzip和minimy服务器路由响应
- 将GET参数添加到q.io.xhr
- codeigniter ajax中的gzip压缩不起作用
- Winjs.xhr、Visual Studio和脱机服务器
- 用Angularjs+Typescript将GZip Json字符串解压为普通Json字符串
- express js 4.4.1中的压缩文件(gzip)
- 访问通过XHR.onreadystatechange回调中的XHR.send(data)发送的数据
- 如何检索AMD的XHR响应代码(+时间戳)'大型Dojo
- 正在发送请求中包含数组的qx.io.request.Xhr请求
- 如何解压缩NodeJS请求's模块gzip响应体
- XHR请求的CSRF预防
- onReadyStateChange未在XHR请求的IE中激发
- 强制浏览器将XHR响应解释为gzip
- 如何在javascript中解压缩gzip xhr响应