У меня есть сайт (localhost:8080
).На веб-сайте отображается iframe
(назовем его frame.com
).frame.com
также имеет iframe для того же источника, который мы назовем frame.com/child
.
Оба frame.com
и frame.com/child
имеют x-frame-options:sameorigin
.Обычно это блокирует localhost
от отображения frame.com
.Однако у меня есть расширение Chrome, которое выполняет следующий код
var headerToStrip = 'x-frame-options';
chrome.webRequest.onHeadersReceived.addListener(
function(details) {
if (details.initiator !== 'http://localhost:8080') {
return { responseHeaders: details.responseHeaders }
}
return {
responseHeaders: details.responseHeaders.filter(function(header) {
return headerToStrip.indexOf(header.name.toLowerCase()) < 0;
})
};
}, {
urls: ["<all_urls>"]
}, ["blocking", "responseHeaders"]
);
Okiedoke, теперь localhost
успешно отображает frame.com
.Тем не менее, проблема все еще существует.frame.com
НЕ отображается frame.com/child
.
Это сообщение, которое я получаю в журнале консоли Chrome:
Refused to display 'frame.com/child' in a frame because it set 'X-Frame-Options' to 'sameorigin'
Почему возникает эта ошибка и как ее устранить?frame.com
и frame.com/child
находятся на одном и том же происхождении, если я правильно понимаю.