Chrome.webRequest API - requestBody始终未定义

时间:2013-08-02 13:21:37

标签: javascript google-chrome google-chrome-extension

我正在尝试在Chrome扩展程序中使用webrequest api。使用以下代码块:

$(document).ready(function(){

chrome.webRequest.onBeforeRequest.addListener(
    function(details)
    {
        console.log(details.requestBody);
    },
    {urls: ["https://myurlhere.com/*"]}
);});

控制台告诉我requestBody未定义。如果我自己记录详细信息,我可以检查详细信息对象,但我似乎无法在任何地方找到requestBody对象。

我的语法错了吗?我做了一些搜索,发现了其他一些例子,看起来应该按照我的方式工作。任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:9)

您必须将['requestBody']指定为addListener的第三个参数。例如:

chrome.webRequest.onBeforeRequest.addListener(
    function(details)
    {
        console.log(details.requestBody);
    },
    {urls: ["https://myurlhere.com/*"]},
    ['requestBody']
);

The documentation说:

  

requestBody(可选对象)

Contains the HTTP request body data.
*Only provided if extraInfoSpec contains 'requestBody'.*

答案 1 :(得分:1)

请注意,将requestBody添加到addListener()会有效,提供请求实际上有一个请求正文。

大多数HTTP请求没有任何请求正文。换句话说,如果请求没有请求正文,则undefined获取e.requestBody 正常