2014-11-01 36 views
0

有从JavaScript请求web资源的特定部分(如第100个字节)异步的方式?请求的Web资源的特定部分异步

我会认为这可能是通过XmlHttpRequest通过设置Range插头来实现。但是,如果服务器应用的内容编码(其中大多数都默认情况下),字节范围将适用于编码数据,而不是原来的。每HTTP/1.1

当实体体被包括一个消息时,该 体的数据类型通过报头字段的内容类型和内容 - 编码确定。这些定义的两层,编码有序模型:

entity-body := Content-Encoding(Content-Type(data))

在HTTP字节范围规范适用于字节的序列中 实体主体[...]。

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

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

是否有另一种方法实现这一点(假设内容编码不能在服务器上禁用)?

回答

1

你可以尝试使用模拟AJAX行为就像装载与你提到的(也可能是编码头将被允许)所有头隐藏的iframe,并从这些隐藏的iframe中获取数据的旧式技术。以下是使用隐藏的iframe上传多部分数据的示例:example。您可以根据自己的需求进行更改。也许它会有所帮助。

+0

感谢您的回答!我将调查它是否可以发出'Accept-Encoding:identity'标题并回传。 – Douglas 2014-11-04 22:18:01