【问题标题】:Modify headers on onHeadersReceived修改 onHeadersReceived 上的标头
【发布时间】:2015-01-23 10:13:33
【问题描述】:

在我的 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 行代码中有一些错误?

【问题讨论】:

  • 您是否尝试过另一个标题?另外,请注意文档中的这一点:“每个请求只有一个扩展可以修改 responseHeaders
  • 是的,我关闭了其他的并尝试添加不同名称的标题
  • 您尝试过的其他标头是否有效?
  • 注册监听器后尝试运行chrome.webRequest.handlerBehaviorChanged();
  • @Xan,不,他们也没有。我试图修改存在一次并删除其中一些,它也不起作用。我添加了`chrome.webRequest.handlerBehaviorChanged();`但这并没有改变任何东西(处理程序被调用但没有任何影响)

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


【解决方案1】:

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 生成)。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-14
  • 2010-10-03
  • 2014-05-15
  • 1970-01-01
相关资源
最近更新 更多