Javascript 异步请求web资源的特定部分

Javascript 异步请求web资源的特定部分,javascript,ajax,html,http,xmlhttprequest,Javascript,Ajax,Html,Http,Xmlhttprequest,有没有一种方法可以从JavaScript异步请求web资源的特定部分(例如前100个字节) 我假设这可以通过XmlHttpRequest通过设置它的Range头来实现。但是,如果服务器应用内容编码(大多数默认情况下是这样),则字节范围将应用于编码数据,而不是原始数据。Per: 当消息中包含实体主体时,该实体的数据类型 正文通过标题字段内容类型和内容确定- 编码。这些定义了两层有序编码模型: 实体体:=内容编码(内容类型(数据)) HTTP中的字节范围规范适用于HTTP中的字节序列 实体体[…]

有没有一种方法可以从JavaScript异步请求web资源的特定部分(例如前100个字节)

我假设这可以通过
XmlHttpRequest
通过设置它的
Range
头来实现。但是,如果服务器应用内容编码(大多数默认情况下是这样),则字节范围将应用于编码数据,而不是原始数据。Per:

当消息中包含实体主体时,该实体的数据类型 正文通过标题字段内容类型和内容确定- 编码。这些定义了两层有序编码模型:

实体体:=内容编码(内容类型(数据))

HTTP中的字节范围规范适用于HTTP中的字节序列 实体体[…]

这使得检索到的内容变得无用,因为如果不检索(并连接)其余的编码资源,就无法对其进行解码

显然不可能从客户端禁用内容编码,因为
XMLHttpRequest
不会更改
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();

是否有其他方法可以实现这一点(假设无法在服务器上禁用内容编码)?

您可以尝试使用模拟ajax行为的旧式技术,例如使用您提到的所有头加载隐藏的iframe(可能允许使用编码头)并从隐藏的iframe获取数据。下面是使用隐藏iframe上载多部分数据的示例:。你可以根据自己的需要改变它。也许会有帮助。

谢谢你的回答!我将研究它是否可以发出
Accept Encoding:identity
头并发回。