Google chrome 删除所有带有Chrome扩展名的CSP标题以允许iframing
我正在尝试创建一个Chrome扩展,它将在任何页面上插入一个iframe侧边栏。我遇到了一个问题,一些网站使用CSP指令来限制可以框架的内容(下面的例子是LinkedIn)。我想我应该尝试的是使用捕获所有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
内容安全策略
标题并删除它们,但我没有成功
拒绝框架“”,因为它违反了
遵循内容安全策略指令:“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"
]);