在我的chrome扩展程序中,我需要在每个浏览网站的标题中添加一行。在后台.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 行代码中存在一些错误?
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
生成)。