Подтвердить что ты не робот

Обход X-Frame-Options DENY в расширении Chrome?

Я автор Intab, расширение Chrome, которое позволяет просматривать ссылку в строке, а не новую вкладку. Там не так много фантастических вещей, происходящих за кулисами, это просто iframe, который загружает URL, на который пользователь нажал.

Он отлично работает, за исключением сайтов, которые устанавливают заголовок X-Frame-Options в DENY или SAMEORIGIN. Некоторые действительно большие сайты, такие как Google и Facebook, используют его, что делает его слегка жутким.

Есть ли способ обойти это? Поскольку я использую расширение Chrome, есть ли какие-либо материалы на уровне браузера, которые я могу получить, что может помочь? Поиск любых идей или помощь!

4b9b3361

Ответ 1

Chrome предлагает webRequest API для перехвата и изменения HTTP-запросов. Вы можете удалить заголовок X-Frame-Options, чтобы разрешить встраивание страниц в iframe.

chrome.webRequest.onHeadersReceived.addListener(
    function(info) {
        var headers = info.responseHeaders;
        for (var i=headers.length-1; i>=0; --i) {
            var header = headers[i].name.toLowerCase();
            if (header == 'x-frame-options' || header == 'frame-options') {
                headers.splice(i, 1); // Remove header
            }
        }
        return {responseHeaders: headers};
    },
    {
        urls: [ '*://*/*' ], // Pattern to match all http(s) pages
        types: [ 'sub_frame' ]
    },
    ['blocking', 'responseHeaders']
);

В манифесте вам нужно указать разрешения webRequest и webRequestBlocking, а также шаблоны URL-адресов, которые вы собираетесь перехватить.