我尝试在 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/