2013-10-30 72 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