Google chrome 删除所有带有Chrome扩展名的CSP标题以允许iframing

Google chrome 删除所有带有Chrome扩展名的CSP标题以允许iframing,google-chrome,google-chrome-extension,Google Chrome,Google Chrome Extension,我正在尝试创建一个Chrome扩展,它将在任何页面上插入一个iframe侧边栏。我遇到了一个问题,一些网站使用CSP指令来限制可以框架的内容(下面的例子是LinkedIn)。我想我应该尝试的是使用捕获所有内容安全策略标题并删除它们,但我没有成功 拒绝框架“”,因为它违反了 遵循内容安全策略指令:“frame src'self” *.doubleclick.net www.slideshare.net radar.cedexis.com platform.linkedin.com media-ex

我正在尝试创建一个Chrome扩展,它将在任何页面上插入一个iframe侧边栏。我遇到了一个问题,一些网站使用CSP指令来限制可以框架的内容(下面的例子是LinkedIn)。我想我应该尝试的是使用捕获所有
内容安全策略
标题并删除它们,但我没有成功

拒绝框架“”,因为它违反了 遵循内容安全策略指令:“frame src'self” *.doubleclick.net www.slideshare.net radar.cedexis.com platform.linkedin.com media-exp1.licdn.com media-exp2.licdn.com m、 c.exp1.licdn.com m.c.exp2.licdn.com媒体-lcdn.licdn.com m、 c.lcdn.licdn.com cdn.embedly.com lichat.azurewebsites.net www.youtube.com www.facebook.com player.vimeo.com embed.ted.com livestream.com embed.gettyimages.com w、 soundcloud.com www.lynda.com media.licdn.com”

这是我的清单文件:

{
    "manifest_version": 2,
    "name": "My Ext",
    "description": "My ext desc",
    "version": "0.1",
    "content_scripts": [{
        "matches": ["<all_urls>"],
        "js": ["jquery-3.3.1.min.js","content.js","scripts.js"],
        "css": ["content.css"]
    }],
    "background": {
        "scripts": ["background.js"]
    },
    "permissions": ["tabs","activeTab","storage","webRequest","webRequestBlocking","<all_urls>"],
    "browser_action": {
        "default_icon": {
            "16": "images/icon16.png",
            "32": "images/icon32.png",
            "48": "images/icon48.png",
            "128": "images/icon128.png"
        }
    },
    "icons": {
        "16": "images/icon16.png",
        "32": "images/icon32.png",
        "48": "images/icon48.png",
        "128": "images/icon128.png"
    }
}
下面是控制台日志的内容和背景截图:


这是从客户端浏览器发送标题的事件。您需要onHeadersReceived。我也尝试了该事件(应该提到),并且我能够添加我的标题,但仍然有错误。我认为这是因为我无法删除/修改现有的头,所以两个conflictedIt只能表示其他扩展受到干扰,或者您的代码不正确。您需要替换标题,而不是添加它。@wOxxOm我用onHeadersReceived尝试编辑了上面的文章,因此您可以看到它正确地添加了标题,但仍然存在冲突。我的观点是,您需要在数组中找到标题,对其进行解析,然后将您想要的主机名添加到该标题的规则中。
chrome.webRequest.onBeforeSendHeaders.addListener(
function(details) {
    console.log(details.requestHeaders);
  for (var i = 0; i < details.requestHeaders.length; ++i) {
    if (details.requestHeaders[i].name === 'content-security-policy') {
      details.requestHeaders.splice(i, 1);
      break;
    }
  }
  return {requestHeaders: details.requestHeaders};
},
{urls: ["<all_urls>"]},
["blocking", "requestHeaders"]);
chrome.webRequest.onHeadersReceived.addListener(function(details) {
    console.log(details.responseHeaders);
    details.responseHeaders.push({
        name: 'content-security-policy',
        value: 'frame-src example.com'
    });
    return { responseHeaders: details.responseHeaders };
}, {
    urls: ['*://*.linkedin.com/*']
}, [
    "responseHeaders","blocking"
]);