在Chrome扩展程序中读取和修改HTTP GET请求

时间:2012-10-18 18:04:37

标签: google-chrome google-chrome-extension webrequest

我想在Chrome扩展程序中阅读和修改(添加)HTTP标头。我正在使用chrome.webRequest API。但我仍然无法阅读它。这是我的代码。

chrome.webRequest.onBeforeSendHeaders.addListener(

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

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

);

我缺少什么?

2 个答案:

答案 0 :(得分:4)

您需要将"blocking"标志添加到ExtraInfoSpec列表以暂停请求。如果没有此标志,则忽略onBeforeSendHeaders事件侦听器的返回值。

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部分。

答案 1 :(得分:1)

但是,对于所有人稍后阅读,它不是XmlHttpRequest的解决方案。

不明显,但异步请求不能阻止。有关此问题的更多信息,请参阅issiue 132731 如果您需要更改XmlHttpRequest的请求标头,则必须使用declarativeWebRequest

您可以在Chrome Rest Client background page(declarativeRequest.setRules()函数)中找到的实施示例。