我正在开发一个扩展,它应该监视远程服务器上的文件,如果文件发生更改(实际上它将附加一些文本),则需要下载此文件的更改(附加)部分。< / p>
所以,这是一个例子:
首先,文件内容为“abcd”。扩展已经得到了这一部分。比有人在服务器上添加一些内容的文件,它将是“abcdefg”。这里扩展应该只获得这个“efg”,而不是整个内容。这可能与chrome和XMLHttpRequest有关吗?
我为FireFox做了这个扩展,并使用XMLHttpRequest.setRequestHeader(“Range”,“bytes = 4-6”(针对此特定情况),但在Chrome中这样做会导致安全违规。
另外,有没有办法在Chrome中设置XMLHttpRequest.setRequestHeader(“Accept-Encoding”,null)?我需要它来避免对zip格式的打包响应。
答案 0 :(得分:2)
这是一个简单的工作示例。我希望它能帮助您找到问题所在。
此扩展程序从http://lists.w3.org/
页面下载4个1024字节的块,并在后台页面控制台中显示截断的块。
的manifest.json
{
"name": "test",
"version": "0.0.1",
"background_page" : "background.html",
"permissions": [ "http://lists.w3.org/" ]
}
background.html
<!DOCTYPE html>
<html>
<head>
<meta charset='utf-8'>
<title>background page</title>
<script type="text/javascript" src="background.js"></script>
</head>
<body>
</body>
</html>
background.js
var index = 0;
function readBlock() {
var request = new XMLHttpRequest();
request.open("GET", "http://lists.w3.org/");
request.setRequestHeader("Range", "bytes=" + index + "-" + (index + 1023));
request.addEventListener("load", function() {
console.log(index, request.response.substring(0, 100) + " ...");
index += 1024;
if (index < 4 * 1024)
readBlock();
}, false);
request.send();
}
readBlock();