2013-10-30 95 views
0

我正在尋找一種方法來收聽在任何選項卡內完成的每個XHR請求,並在alert()彈出窗口(或者如果可能的話,在控制檯中)輸出結果。我想獲得標題+請求+回覆。如何捕捉任何XHR請求?

這裏是我的代碼:

manifest.json

{ 
    "manifest_version": 2, 

    "name": "Sample APP", 
    "description": "Sample Description", 
    "version": "1.0", 

    "permissions": [ 
     "webRequest", 
     "*://*/*" 
    ], 
    "background": { 
     "scripts": ["script.js"] 
    } 
} 

script.js

chrome.webRequest.onCompleted.addListener(
    function(details) { 
     alert(details); 
    }, 
    {}, 
    [] 
); 

我在做什麼錯?

+0

您是否嘗試過我的建議解決方案?它對你有用嗎? – gkalpak

回答

1

[EDIT:更新,其中包含apsillers「有用的話(見註釋)]

在RequestFilter中,urls字段是強制性的。爲了監聽請求的任何網址,使用:

chrome.webRequest.onCompleted.addListener(
    function(details) { 
     console.log(details); 
    }, { 
     urls: ["<all_urls>"], 
     types: ["xmlhttprequest"] // <-- to narrow down to only AJAX requests 
    }, [] 
); 

最後,爲了得到各條信息的,你是後(頭,要求等),您需要註冊相應的event-listeners for the various events 。請注意,您可以使用details參數的requestId屬性將屬於同一請求的事件鏈接在一起。

+2

另外,如果你想縮小到只有Ajax,你可以指定'{url:[「」],類型:[「xmlhttprequest」]}。當前代碼將在加載每個頁面時獲得* all * HTTP請求。 – apsillers

+2

建議使用多個事件偵聽器是正確的;我只是補充一點,你可以使用'details'參數的'requestId'屬性來鏈接屬於同一個請求的事件。 – apsillers