2

我想在 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"]

);

我错过了什么?

4

2 回答 2

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"]
                      //^^^^^^^^
);

我建议更仔细地阅读文档,特别是注册事件侦听器部分。

于 2012-10-18T19:19:57.543 回答
1

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

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

您可以在 Chrome Rest Client后台页面(declarativeRequest.setRules() 函数)中找到一个实现示例。

于 2012-10-19T15:23:24.380 回答