Отключить X-Frame-Option на стороне клиента
Я хотел бы вырезать заголовок X-Frame-Option на стороне клиента в Firefox (и Chrome).
Что я нашел:
Преодоление "Отображение запрещено с помощью X-Frame-Options"
Решение, отличное от клиента, не подходит для моей цели
https://bugzilla.mozilla.org/show_bug.cgi?id=707893
Кажется, это довольно близко. Я попытался создать user.js в профиле dir с кодом user_pref ( "b2g.ignoreXFrameOptions", true);
но это не сработало. Вторая последняя запись, по-видимому, подразумевает компиляцию ff с измененным кодом? Если это так, это тоже не возможное решение для меня.
Я просто написал небольшую HTML-страницу с некоторыми JS, которые перебирают список видеороликов YouTube, последовательно загружая их в iframe. Я знаю, что youtube поддерживает плейлисты, но они сосут, и я не хочу загружать видео.
Кроме того, было бы неплохо, если бы браузер только игнорировал X-Frame-Option для локальных файлов. Это несколько снизит ядро безопасности, которое я открою, отключив это. Что касается Chrome, решение было бы неплохо, но это не так важно.
Я предполагаю, что другой подход состоял бы в перехвате входящих пакетов TCP/IP, содержащих HTTP Respone, и удаления этой строки заголовка, но это довольно перебор.
[править]
Использование youtube.com/embed - плохое решение, так как многие видео не позволяют внедряться...
Ответы
Ответ 1
Это можно легко достичь с помощью HTTP Observer через расширение Firefox. Этот наблюдатель будет выглядеть примерно так:
let myListener =
{
observe : function (aSubject, aTopic, aData)
{
if (aTopic == "http-on-examine-response")
{
let channel = aSubject.QueryInterface(Ci.nsIHttpChannel);
try
{ // getResponseHeader will throw if the header isn't set
let hasXFO = channel.getResponseHeader('X-Frame-Options');
if (hasXFO)
{
// Header found, disable it
channel.setResponseHeader('X-Frame-Options', '', false);
}
}
catch (e) {}
}
}
}
Вы можете найти дополнительную информацию, например, как установить наблюдателя на MDN [1] [2]
[1]: https://developer.mozilla.org/en/docs/Observer_Notifications#HTTP_requests
[2]: https://developer.mozilla.org/en-US/docs/Setting_HTTP_request_headers#Registering
Ответ 2
Используя код diegocr, я создал надстройку Firefox, чтобы разрешить отображение веб-страниц с X-Frame-Options в их заголовке, поэтому они будут отображаться при обращении через iframe. Его можно загрузить/установить здесь: https://addons.mozilla.org/en-US/firefox/addon/ignore-x-frame-options/
Ответ 3
Поздний ответ, но это отлично работает для Chrome:
https://chrome.google.com/webstore/detail/ignore-x-frame-headers/gleekbfjekiniecknbkamfmkohkpodhe/related