2012-10-18 57 views
2

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

chrome.webRequest.onBeforeSendHeaders.addListener(

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

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

); 

我在想什么?

回答

4

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

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

+0

Thanks @rob That that help。 – QuBit5

+0

很酷。几乎.... https://code.google.com/p/chromium/issues/detail?id=132731 – msangel

1

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

这并不明显,但异步请求不能被阻止。更多关于这个问题,你可以在issiue 132731 阅读如果您需要更改请求头为的XmlHttpRequest必须使用declarativeWebRequest

实现的一个例子,你可以找到在Chrome的REST客户端background page(declarativeRequest.setRules()函数)。