Отключить X-Frame-Option на стороне клиента - программирование
Подтвердить что ты не робот

Отключить 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 - плохое решение, так как многие видео не позволяют внедряться...

4b9b3361

Ответ 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/