如何在我的扩展程序中使用 iframe 嵌入 youtube 频道页面?
How to embed youtube channel page using iframe in my extension?
我正在创建扩展以使用标签组织 YouTube 频道。它有 angular 前端 url 像这样
moz-extension://f78b3bd9-a210-41c5-9d8d-9b7ab3717f6e/index.html#/channel/UCtinbF-Q-fVthA0qrFQTgXQ
我想使用 iframe 嵌入频道页面,但安全政策不允许我这样做。
Load denied by X-Frame-Options: https://www.youtube.com/ does not permit cross-origin framing.
所以我尝试修改 X-Frame-Options,但它没有改变任何东西(headers 没有添加)。
我做了什么:
1 添加了对 manifest.json 的权限:
"webRequest",
"://.youtube.com/",
"://www.youtube.com/*"
2 在 background.js
中写了一些代码
function addFramePermissions(e) {
console.log("Loading url: " + e.url);
var allowedHeaders = [];
for (var header of e.responseHeaders) {
if (header.name.toLowerCase() !== "x-frame-options") {
allowedHeaders.push(header);
} else {
console.log('x-frame-options found!!!');
}
}
e.responseHeaders = allowedHeaders;
return { responseHeaders: e.responseHeaders };
}
browser.webRequest.onHeadersReceived.addListener(
addFramePermissions,
{
urls: [
"*://*.youtube.com/*",
"*://youtube.com/*"
]
},
["blocking", "responseHeaders"]
);
代码达到功能,我可以在控制台中看到 "x-frame-options found!!!",但是 firefox 的网络监视器显示 x-frame-options 存在,值为 SAMEORIGIN
我运行我的分机在Chrome和Chrome说我忘了在权限里加上"webRequestBlocking"。谢谢,Chrome!
我正在创建扩展以使用标签组织 YouTube 频道。它有 angular 前端 url 像这样
moz-extension://f78b3bd9-a210-41c5-9d8d-9b7ab3717f6e/index.html#/channel/UCtinbF-Q-fVthA0qrFQTgXQ
我想使用 iframe 嵌入频道页面,但安全政策不允许我这样做。
Load denied by X-Frame-Options: https://www.youtube.com/ does not permit cross-origin framing.
所以我尝试修改 X-Frame-Options,但它没有改变任何东西(headers 没有添加)。
我做了什么:
1 添加了对 manifest.json 的权限:
"webRequest", "://.youtube.com/", "://www.youtube.com/*"
2 在 background.js
中写了一些代码function addFramePermissions(e) {
console.log("Loading url: " + e.url);
var allowedHeaders = [];
for (var header of e.responseHeaders) {
if (header.name.toLowerCase() !== "x-frame-options") {
allowedHeaders.push(header);
} else {
console.log('x-frame-options found!!!');
}
}
e.responseHeaders = allowedHeaders;
return { responseHeaders: e.responseHeaders };
}
browser.webRequest.onHeadersReceived.addListener(
addFramePermissions,
{
urls: [
"*://*.youtube.com/*",
"*://youtube.com/*"
]
},
["blocking", "responseHeaders"]
);
代码达到功能,我可以在控制台中看到 "x-frame-options found!!!",但是 firefox 的网络监视器显示 x-frame-options 存在,值为 SAMEORIGIN
我运行我的分机在Chrome和Chrome说我忘了在权限里加上"webRequestBlocking"。谢谢,Chrome!