2013-01-14 67 views
1

我正在創建一個針對特定站點(其服務器無法訪問)的擴展。我試圖以一種讓我使用HEAD請求獲取重定向url的方式來處理HTTP 302重定向。我這樣做的代碼是這樣的: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"]); 

現在目前匹配的非特異性足以引發這些事件與正常航行到匹配的URL。一旦這樣做事情進展得很好,當然不是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中工作。