1

원격 서버에서 파일을 모니터링해야하는 확장 프로그램을 개발 중이며 파일이 변경되면 (실제로 일부 텍스트가 추가됩니다)이 파일의 변경된 (첨부 된) 부분은 다운로드해야합니다.맞춤 XMLHttpRequest가 포함 된 Google 크롬 확장

첫째, 파일 내용이었다 "ABCD"

그래서, 여기에 예입니다. 확장 기능은 이미이 부분을 얻었습니다. 누군가가 서버에 파일 내용을 추가하면 "abcdefg"가됩니다. 여기서 확장은 전체 내용이 아닌 "efg"만 가져야합니다. 크롬과 XMLHttpRequest를 사용하여이 작업을 수행 할 수 있습니까?

나는 파이어 폭스에 대한이 확장을 만든이 특정 상황에 대한 ("범위", "바이트 = 4-6"() XMLHttpRequest.setRequestHeader를 사용하지만, 크롬에서 그렇게 된 보안 위반이 발생합니다.

또한, 크롬에서 XMLHttpRequest.setRequestHeader ("Accept-Encoding", null)을 설정하는 방법이 있습니까? zip 형식에 대한 응답을 포장하지 않으려면 필요합니까?

+0

당신은'String.substring()'사용할 수 있습니다'var에 고해상도 = XHR을. responseText.substring (4,6);'. – ComFreek

+0

예,하지만 이것은 우선 순위 작업 인 트래픽을 저장하지 않습니다. – Prizoff

+2

나는 XMLHttpRequest.setRequestHeader ("Range", "...")를 압축에서 파일을 추출하는 확장자로 사용하고 예상대로 작동한다. 나는 당신의 문제가 다른 곳에 있다고 생각합니다. 몇 가지 코드를 보여줄 수 있습니까? –

답변

2

다음은 간단한 작업 예제입니다.

이 확장은 http://lists.w3.org/ 페이지에서 1024 바이트의 4 블록을 다운로드합니다. 백그라운드 페이지 콘솔에 잘린 블록을 표시합니다.

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(); 
+0

이 예제는 [XHR Level 2 API] (http://www.w3.org/TR/XMLHttpRequest2/)를 사용합니다. –

관련 문제