修改onHeadersReceived上的标头

时间:2014-11-25 12:00:51

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

在我的Chrome扩展程序中,我需要在浏览的每个网站的标题中添加一行。在background.js文件中,我添加了这样的代码:

var responseListener = function(details){
    var rule = {
        "name": "Access-Control-Allow-Origin",
        "value": "*"
    };
    details.responseHeaders.push(rule);
    return {responseHeaders: details.responseHeaders};
};

 chrome.webRequest.onHeadersReceived.addListener(responseListener,
     {urls: [   "*://*/*" ] },
     ["blocking", "responseHeaders"]);

调试处理程序时调用处理程序,新添加的标头成功通过我在堆栈中找到的任何过滤器。但它没有出现在网络选项卡的响应标题部分,并且不会影响任何代码。我使用这些权限:

"tabs","<all_urls>", "http://*/*" ,"webRequest","webRequestBlocking", "webNavigation"

是否有新的政策或API已更改,不允许执行此类操作,或者我的10行代码中存在一些错误?

1 个答案:

答案 0 :(得分:8)

Chrome开发者工具的“网络”标签不会显示扩展程序的修改。见https://crbug.com/258064

如果您希望了解您的扩展程序是否已成功修改了请求,请访问chrome://net-internals/#events,点击URL_REQUEST类型的请求,然后查找URL_REQUEST_DELEGATE条目,例如URL_REQUEST_FAKE_RESPONSE_HEADERS_CREATED(这是通过chrome.declarativeWebRequest API生成的日志条目示例)或"delegate_info = "extension [extension name]"(由chrome.webRequest生成)。