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監聽器的阻塞部分防止了在所有觸發事件,如果我除去保護有沒有足夠的時間追加標題。所以我的問題是什麼可能會阻止它正確地解決事件?
@Eric你知道這是我的答案,對吧? – BeardFist