Отключить X-Frame-Option на стороне клиента

Я хотел бы отключить заголовок X-Frame-Option на стороне клиента в Firefox (и Chrome). Что я нашел: Преодоление отображения, запрещенного X-Frame-Options Решение не на стороне клиента не подходит для моей цели

https://bugzilla.mozilla.org/show_bug.cgi?id=707893 Это, кажется, довольно близко. Я попытался создать user.js в каталоге профиля с кодом user_pref("b2g.ignoreXFrameOptions", true); но это не сработало. Вторая последняя запись, кажется, подразумевает компиляцию ff с измененным кодом? Если это так, это также не возможное решение для меня.

Я только что написал небольшую HTML-страницу с некоторым JS, который зацикливает список видео YouTube, последовательно загружая их в iframe. Я знаю, что YouTube поддерживает плейлисты, но они отстой, и я не хочу загружать видео. Кроме того, было бы неплохо, если бы браузер игнорировал X-Frame-Option только для локальных файлов. Это несколько минимизирует дыру в безопасности, которую я открываю, отключая это. Что касается Chrome, решение было бы неплохо, но это не так важно.

Я предполагаю, что другим подходом будет перехват входящих пакетов TCP/IP, содержащих HTTP Respone, и удаление этой строки заголовка, но это довольно избыточно.

[править] Использование youtube.com/embed — плохой обходной путь, так как многие видео нельзя встроить...


person Klausi Mausi    schedule 14.10.2012    source источник


Ответы (3)


Этого можно легко добиться с помощью 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

person diegocr    schedule 16.05.2014
comment
Также будет полезна дополнительная информация о других браузерах! - person RienNeVaPlu͢s; 23.05.2014

Используя код diegocr, я создал надстройку Firefox, позволяющую отображать веб-страницы, у которых в заголовке есть X-Frame-Options, поэтому они будут отображаться при доступе через iframe. Его можно скачать/установить здесь: https://addons.mozilla.org/en-US/firefox/addon/ignore-x-frame-options/

person René Houkema    schedule 13.07.2015
comment
René Houkema, я попробовал это, но не решил свой случай. Я оставил информацию в разделе обзора дополнений. - person Skip R; 03.02.2016
comment
@René Houkema Я тоже пробовал, и у меня не получилось, я напечатал Ошибка: [$injector:modulerr] Не удалось создать экземпляр модуля demoApp из-за ... - person oshingc; 23.05.2016
comment
@Patrick Патрик Я хотел того же и нашел это github.com/psywolf85/Ignore_X-Frame-Options у меня были смешанные результаты, но я отлично работал для конкретной цели, в которой я нуждался. - person arana; 16.05.2018

Расширение Firefox, упомянутое Рене Хоукемой в другой ответ больше не работает, поэтому я создал новый.

https://addons.mozilla.org/fr/firefox/addon/ignore-x-frame-options-header/

Это расширение также совместимо с Quantum.

Источник и обновления: https://github.com/ThomazPom/Moz-Ext-Ignore-X-Frame-Options

person ThomazPom    schedule 17.07.2018