【发布时间】:2014-11-03 05:23:29
【问题描述】:
有没有办法从 JavaScript 异步请求 Web 资源的特定部分(例如前 100 个字节)?
我假设这可以通过 XmlHttpRequest 设置 Range 标头来完成。但是,如果服务器应用内容编码(默认情况下大多数情况下),则字节范围将适用于 编码 数据,而不是原始数据。每HTTP/1.1:
当消息中包含实体主体时,该实体的数据类型 正文通过标题字段 Content-Type 和 Content- 确定 编码。这些定义了一个两层的有序编码模型:
entity-body := Content-Encoding( Content-Type( data ) )
HTTP 中的字节范围规范适用于 实体主体 […]。
这会使检索到的内容变得无用,因为如果不检索(并连接)其余编码资源,就无法对其进行解码。
显然不可能从客户端禁用内容编码,因为 XMLHttpRequest prohibits Accept-Encoding 不会被更改。
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function () { /* ... */ };
xhr.open("GET", url, true);
xhr.setRequestHeader("Range", "bytes=0-99");
xhr.setRequestHeader("Accept-Encoding", "identity"); // not allowed
xhr.send();
是否有其他方法可以实现这一点(假设不能在服务器上禁用内容编码)?
【问题讨论】:
标签: javascript ajax html http xmlhttprequest