在我的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行代码中存在一些错误?
答案 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
生成)。