Javascript webRequest.OnHeaders接收到未触发

Javascript webRequest.OnHeaders接收到未触发,javascript,firefox,firefox-addon,firefox-addon-webextensions,Javascript,Firefox,Firefox Addon,Firefox Addon Webextensions,我试图在iFrame中加载网站,但服务器正在发送X-Frame-Options:SAMEORIGIN标题,因此我尝试使用onHeadersReceived修改标题,尽管我无法使其正常工作 manifest.json { "manifest_version": 2, "name": "__MSG_extensionName__", "description": "__MSG_extensionD

我试图在iFrame中加载网站,但服务器正在发送
X-Frame-Options:SAMEORIGIN
标题,因此我尝试使用onHeadersReceived修改标题,尽管我无法使其正常工作

manifest.json

{

  "manifest_version": 2,
  "name": "__MSG_extensionName__",
  "description": "__MSG_extensionDescription__",
  "default_locale": "en",
  "version": "0.1",

  "author": "author",
  "homepage_url": "https://github.com/",

  "icons": {
    "48": "assets/icons/logo.png"
  },

  "background": {
    "page": "../../background.html"
  },

  "content_scripts": [
    {
      "matches": ["<all_urls>"],
      "js": ["scripts/dist/bundle.js"],
      "css": ["assets/css/main.css"]
    }
  ],

  "permissions": [
    "tabs",
    "webRequest",
    "contextMenus",
    "webNavigation",
    "webRequestBlocking"
  ],

  "web_accessible_resources": [
    "assets/icons/logo.png"
  ]

}
contextMenu.js

browser.contextMenus.create( {
    id: "customsearch",
    title: "Search",
    contexts: ["selection"]
} );


// Context menu onClicked listener
browser.contextMenus.onClicked.addListener( (info, tab) => {
    if (info.menuItemId = "custom-search") {
        sendMessageToTab(tab, info);
    }
} );


function sendMessageToTab(tab, info) {
    browser.tabs.sendMessage(
        tab.id,
        { query: info.selectionText }
    );
}
var extraInfoSpec = ['blocking', 'responseHeaders'];
var filter = {
    urls: ['<all_urls>'],
    tabId: -1
};

// Bypass X-Frame-Options
browser.webRequest.onHeadersReceived.addListener(
    modifyHeadersCallback,
    filter,
    extraInfoSpec
);


// onHeadersReceived Callback
function modifyHeadersCallback(details) {
    let modifiedResponseHeaders = details.responseHeaders.filter(
        header => !(header.name.toLowerCase() == 'x-frame-options' || header.name.toLowerCase() == 'content-security-policy')
    );

    return {responseHeaders: modifiedResponseHeaders};
};
background.js

browser.contextMenus.create( {
    id: "customsearch",
    title: "Search",
    contexts: ["selection"]
} );


// Context menu onClicked listener
browser.contextMenus.onClicked.addListener( (info, tab) => {
    if (info.menuItemId = "custom-search") {
        sendMessageToTab(tab, info);
    }
} );


function sendMessageToTab(tab, info) {
    browser.tabs.sendMessage(
        tab.id,
        { query: info.selectionText }
    );
}
var extraInfoSpec = ['blocking', 'responseHeaders'];
var filter = {
    urls: ['<all_urls>'],
    tabId: -1
};

// Bypass X-Frame-Options
browser.webRequest.onHeadersReceived.addListener(
    modifyHeadersCallback,
    filter,
    extraInfoSpec
);


// onHeadersReceived Callback
function modifyHeadersCallback(details) {
    let modifiedResponseHeaders = details.responseHeaders.filter(
        header => !(header.name.toLowerCase() == 'x-frame-options' || header.name.toLowerCase() == 'content-security-policy')
    );

    return {responseHeaders: modifiedResponseHeaders};
};
var extraInfoSpec=['blocking','responseHeaders'];
变量过滤器={
网址:[''],
表-1
};
//绕过X帧选项
browser.webRequest.onHeadersReceived.addListener(
修改HeadersCallback,
过滤器,
外部信息规范
);
//onHeadersReceived回调
函数modifyHeadersCallback(详细信息){
让modifiedResponseHeaders=details.responseHeaders.filter(
header=>!(header.name.toLowerCase()='x-frame-options'| | header.name.toLowerCase()=='content security policy')
);
返回{responseHeaders:modifiedResponseHeaders};
};
上下文菜单按预期工作,问题在于
browser.webRequest.onHeadersReceived
侦听器,它似乎根本没有被触发,因为我在控制台上没有收到任何错误或日志。 我做了任何广泛的搜索,并尝试了我找到的大多数解决方案,但对我的案例没有任何效果。你能发现我的方法有什么错误吗?

Firefox 您只需从
过滤器
对象中删除
tabId:-1

browser.webRequest.onHeadersReceived.addListener(
修改HeadersCallback,

{URL:['但是,如果有人想报告,请在上打开一个新问题。我想这是故意的,因为
extraHeaders
模式意味着此标题在内部网络进程中处理,这与浏览器进程是分开的。

您还需要将站点添加到manifest.json中的
权限
,在本例中是
“”
我尝试过,但没有成功。我更新了我的
manifest.json
权限,并在
extraInfoSpec
数组中添加了
extraHeaders
,但现在它抛出此错误
未捕获错误:参数extraInfoSpec的类型错误(错误处理2:无效枚举值“extraHeaders”)对于webRequest.onHeadersReceived.
。对于Firefox,您只需删除
tabId:-1
。查看更新的代码。它实际上正在工作!!正是
tabId
的存在和
权限中缺少
url
造成了这种混乱。我真的很感激,干杯!