2012-10-18 58 views
2

我想在Chrome擴展中讀取和修改(添加)HTTP標頭。我正在使用chrome.webRequest API。但我仍然無法閱讀它。這是我的代碼。在Chrome擴展中讀取和修改HTTP GET請求

chrome.webRequest.onBeforeSendHeaders.addListener(

    function(details) { 
    details.requestHeaders.push({name:"dummyHeader",value:"1"}); 
    return {requestHeaders: details.requestHeaders}; 
    }, 

    {urls: ["<all_urls>"]}, 
    ["requestHeaders"] 

); 

我在想什麼?

回答

4

您需要將"blocking"標誌添加到ExtraInfoSpec列表中才能暫停請求。如果沒有此標誌,則會忽略事件偵聽器的返回值。

chrome.webRequest.onBeforeSendHeaders.addListener(
    function(details) { 
     details.requestHeaders.push({name:"dummyHeader",value:"1"}); 
     return {requestHeaders: details.requestHeaders}; 
    }, 
    {urls: ["<all_urls>"]}, 
    ["requestHeaders", "blocking"] 
         //^^^^^^^^ 
); 

我建議仔細閱讀文檔,特別是Registering event listeners部分。

+0

Thanks @rob That that help。 – QuBit5

+0

很酷。幾乎.... https://code.google.com/p/chromium/issues/detail?id=132731 – msangel

1

但是,對於所有稍後閱讀它,這不是XmlHttpRequest的解決方案。

這並不明顯,但異步請求不能被阻止。更多關於這個問題,你可以在issiue 132731 閱讀如果您需要更改請求頭爲的XmlHttpRequest必須使用declarativeWebRequest

實現的一個例子,你可以找到在Chrome的REST客戶端background page(declarativeRequest.setRules()函數)。