如何让浏览器解压缩通过Ajax获取的gzip压缩文本文件?

8
假设有一台服务器无法对用户请求的响应进行压缩。尽管如此,Web开发人员仍然创建了一个myfile.txt.gz文件,并将其存储在http://www.mysite.com/myfile.txt.gz上。
是否可以让浏览器自动解压缩这个压缩的文本文件并将结果存储在var中作为Ajax请求的一部分?如果可以,如何实现?
如果需要,我可以使用其他压缩算法。
更新:
我正在尝试使用以下JQuery Ajax调用:
var fetch = function() {

    $.ajax({
        type: 'GET',
        url:  "./data.txt.gz",
        headers: { "Accept-Encoding" : "gzip" },
        dataType: "text",
        async: true,
        success: function(result) {
            $("#midEnglob").text(result);
        },
        error: function(jqXHR, textStatus, errorThrown) {
            alert("Issue: "
                + textStatus + " "
                + errorThrown + " !");
        }

    });

}

但我在浏览器中看到了以下内容:

输入图片说明

有什么想法吗?


我不确定,但是如果您将headers设置为 Content-type: text/plainContent-encoding: gzip,它可能会起作用。这就是HTML页面发送gzip的方式。您应该先检查Accept-Encoding header。 - gen_Eric
我尝试了但似乎不起作用。您有可运行的代码示例吗? - Jérôme Verstrynge
我建议的所有代码都应该在服务器端。你使用的是哪种服务器端语言(如果有的话)?(我只知道PHP)。在JavaScript中,你不需要做任何特殊的事情,只需像平常一样进行AJAX调用即可。如果浏览器支持gzip,并且服务器发送了“Content-encoding”头,则它会自动解压缩。 - gen_Eric
好的,问题在于我无法控制服务器并且不能保证正确的内容编码头。有没有办法告诉Ajax返回的内容是二进制的? - Jérôme Verstrynge
如果您无法控制服务器端,则可能需要使用 JavaScript 实现的 gzip(在 Google 上搜索)进行解码。 - gen_Eric
你可以尝试从jsxgraph“盗取”(LGPL) (解)压缩器: https://github.com/jsxgraph/jsxgraph/blob/master/JSXCompressor/jsxcompressor.js。虽然数据可能需要是base64格式(该文件还包含一个解码器/编码器),才能使其工作。 - gen_Eric
1个回答

4

3
我无法控制服务器端的内容编码...我该如何从Ajax中检索到二进制内容? - Jérôme Verstrynge

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接