在AJAX中仅检索远程URL的一部分

Abh*_*ogi 2 javascript ajax http firefox-addon google-chrome-extension

我尝试在Google上搜索并阅读文档 但没有成功.我正在使用contentScript(chrome扩展)或firefox用户称为greasemonkey脚本来制作ajax请求.

使用AJAX获取URL的典型函数,

function getURL(url, element)
{
    var request = new XMLHttpRequest();
    request.onreadystatechange = function()
    {   
        if ( request.readyState == 4 ) 
        {   
            callback( request.responseText, element, request.status );    
        }   
    };  
    request.open( "GET", url, true );
    request.send()
}
Run Code Online (Sandbox Code Playgroud)

可以说我只需要第一个10kb的页面,但是whole size of page is more than 200kb.我正在检索的页面是普通的HTML.我不想waste the bandwidth by downloading the excess 190kb.有没有办法实现这一目标?另外,如果只检索100kb到110kb的页面的一部分可能吗?

我对浏览器特定的解决方案(chrome)持开放态度.我必须将扩展程序移植到Firefox,所以也欢迎这方面的想法.

Wla*_*ant 7

您可以发送Range标题:

request.setRequestHeader("Range", "bytes=0-9999");
request.send(null);
Run Code Online (Sandbox Code Playgroud)

请注意,服务器可能会忽略此标头,您将获得通常的响应.在大多数情况下,响应将是"206 Partial Content",但只有10000字节的数据.Content-Range响应标题指示您获得的文件的哪个部分,例如request.getResponseHeader("Content-Range")可能给您bytes 0-9999/1234567(此处1234567是文件的总大小).

显然,您也可以request.setRequestHeader("Range", "bytes=100000-119999");从文件中间获取数据.