2013-01-14 1 views
1

서버에 대한 액세스 권한이없는 특정 사이트를 대상으로 확장 프로그램을 만들고 있습니다. HTTP 요청을 사용하여 리디렉션 URL을 얻을 수있는 방식으로 HTTP 302 리디렉션을 처리하려고합니다. 현재 매칭이 일치하는 URL로 일반 네비게이션과 이러한 이벤트를 트리거 할만큼 비 특정 지금Chrome WebRequest가 제대로 차단되지 않습니다.

var redirUrl = ""; 
var requestId = 0; 

chrome.webRequest.onBeforeRedirect.addListener(function(details){ 
    console.log("before redirect"); 
    if(details.method == "HEAD"){ 
    redirUrl = details.redirectUrl; 
    requestId = details.requestId; 
    } 
}, 
{urls: [matchUrl]}); 

chrome.webRequest.onHeadersReceived.addListener(function(details){ 
    console.log("on headers received"); 
    if(details.requestId == requestId){ 
    var temp = {"name":"redirUrl","value":redirUrl}; 
    details.responseHeaders.push(temp);  
    } 
    return {responseHeaders:details.responseHeaders}; 
}, 
{urls: [matchUrl]},["responseHeaders", "blocking"]); 

chrome.webRequest.onCompleted.addListener(function(details){ 
    console.log(JSON.stringify(details.responseHeaders)); 
}, 
{urls: [matchUrl]},["responseHeaders"]); 

: 그렇게 내 코드는 다음입니다. 그렇게하면 아무 것도 추가하지 않는 HEAD 요청이 아닌 물론 완벽하게 잘 진행됩니다. 모든 리디렉션 된 요청을 허용하더라도 헤더가 제대로 추가됩니다. 내 문제는 내 배경의 js 파일에 다른 장소에 전화를 할 때 발생한다 :

$.ajax({ 
    url: url, 
    data: datas, 
    type: "HEAD", 
    success: function(data,statusCode, jqXHR){ 
    console.log(jqXHR.getAllResponseHeaders()); 
    }  
}); 

onHeadersRecieved 청취자의 차단 부분은 전혀 해고되는 이벤트를 방지하고, 내가 차단을 제거하는 경우가있다 헤더를 추가 할 시간이 충분하지 않습니다. 그래서 내 질문에 제대로 이벤트를 발사에서 막을 수 있을까?

+0

@ 에릭 (Eric) 그게 내 대답이라는 것을 알지? – BeardFist

답변

0

글쎄, 내 코드가 아닌 크롬의 버그 인 것 같다. 그리고 수정은 안정된 채널로 내려 가야한다. 나는 그것이 this issue 일 수도 있고 적어도 그것과 관련이 있다고 믿고이 코드는 26.0.1386.0 canary에서 작동하는 것으로 확인되었다.

관련 문제