我想从
JavaScript中的XMLHttpRequest对象发出部分内容请求.我正在从服务器加载一个大的二进制文件,我宁愿从服务器流式传输,类似于html5视频的处理方式.
我可以使用setRequestHeader设置Range头. Chrome中的“网络”检查器显示Range标题已成功设置.但是,Accept-Encoding标题设置为“gzip,deflate”,Chrome不会让我设置该标题(来自W3C标准).
有没有什么办法可以强制服务器使用来自XMLHttpRequest对象的206部分内容从javascript进行响应?
解决方法
此范围请求适用于我:
http://jsfiddle.net/QFdU4/
var xhr = new XMLHttpRequest; xhr.onreadystatechange = function () { if (xhr.readyState != 4) { return; } alert(xhr.status); }; xhr.open('GET','http://fiddle.jshell.net/img/logo.png',true); xhr.setRequestHeader('Range','bytes=100-200'); // the bytes (incl.) you request xhr.send(null);
您必须确保服务器允许范围请求.你可以用卷曲测试:
$curl -v -r 100-200 http://example.com/movie.mkv > /dev/null