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

标签 javascript ajax http google-chrome-extension firefox-addon

我尝试在 Google 上搜索并阅读了 documentation但没有成功。我在 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()
}

比方说我只需要页面的前 10kb页面的整个大小超过 200kb。我正在检索的页面是一个普通的 HTML。我不想下载多余的 190kb 来浪费带宽。有什么办法可以实现吗?另外,是否可以只检索从 100kb 到 110kb 的页面的一部分?

我对浏览器特定的解决方案(chrome)持开放态度。我也必须将扩展移植到 Firefox,因此也欢迎提出相关想法。

最佳答案

你可以发送一个 Range header :

request.setRequestHeader("Range", "bytes=0-9999");
request.send(null);

请注意,服务器可能会忽略此 header ,您将得到通常的响应。在大多数情况下,响应将是“206 部分内容”,但恰好包含 10000 字节的数据。 Content-Range response header 指示您拥有文件的哪一部分,例如request.getResponseHeader("Content-Range") 可能会给您bytes 0-9999/1234567(这里的 1234567 是文件的总大小)。

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

关于javascript - 在 AJAX 中仅检索远程 URL 的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9820384/

相关文章:

javascript - 交响乐团 3/4 : delete a table row from a database through AJAX

javascript - 客户端接收json对象到javascript

jquery - 处理 Thymeleaf Spring MVC AJAX 表单及其错误消息的推荐方法

php - 如何使用 HTTP PUT 使用 PHP curl 上传文件?

javascript - 泛型类型 'ReturnType' 需要 1 个类型参数.ts(2314)

javascript - 了解 Angular Controller 与指令

javascript - 使用字符串作为 for 循环表达式和条件

javascript - for 循环中的 jQuery 延迟队列

android - Android 中的 HttpPost - 无法识别的字符

java - 303 应答期间丢失 header