【发布时间】:2015-03-31 18:42:41
【问题描述】:
我有一台设备需要从中下载文件。在某些情况下,该文件的content-encoding 可能不正确。特别是,当它没有被 gzip 压缩或以任何方式压缩时,它可能具有“gzip”的内容编码。
因此,当文件被 gzip 压缩时,使用基本的 ajax GET 获取内容很简单:
$.ajax({
url: 'http://' + IP + '/test.txt',
type: 'GET'
})
.done(function(data) {
alert(data);
});
但正如您所料,当内容编码错误时,这会失败。
需要明确的是,我不是在寻找解决方案来绕过ERR_CONTENT_DECODING_FAILED,而只是在浏览器中导航到给定的网址。例如,我希望能够将 csv 加载到 javascript 中的字符串中以进行进一步解析。
我可以获取文件,并强制它跳过尝试解码,或覆盖响应的内容编码,或类似的吗?
【问题讨论】:
-
我建议尝试从 Accept-Encoding 标头中删除 gzip,但由于某种原因,浏览器似乎不允许您这样做。我唯一能想到的是一个代理,你有一些服务器代码发出请求,这应该让你在如何构建请求和处理响应方面有更大的灵活性。
-
Accept-Encoding的合理想法,但已经尝试过,并确认它会总是 发回Content-Encoding: gzip,无论如何。 -
我唯一的其他想法就是对负责发送错误响应标头的人大喊大叫(或为他们购买 cookie),并让他们修复它。
-
总是可以创建一个服务器端解决方案来处理抓取文本并返回它。
-
在这里使用 try-catch 是否过于简单?我认为这会起作用,并且可以捕获编码不正确时的预期错误。
标签: javascript ajax content-encoding