【发布时间】: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