проверьте заголовок http, чтобы увидеть, можно ли загрузить URL в iframe - PullRequest
1 голос
/ 20 мая 2019

Мне нужно определить, может ли URL-адрес быть загружен в iframe, и если нет, его необходимо открыть в следующей вкладке.

Я попытался загрузить заголовок для данного URL и проверить X-Frame-Options значение заголовка.

Вот что я попробовал:

$(document).on('opening', '.link-modal', function(e) {
    var target = $(e.target);
    var url = target.attr('data-izimodal-iframeURL');

    console.log(isIframeDisabled(url));
});

function isIframeDisabled($src) {
    try {
        $headers = get_headers($src, 1);
        // return $headers;
        $headers = array_change_key_case($headers, CASE_LOWER);
        // Check Content-Security-Policy
        if(isset($headers[strtolower('Content-Security-Policy')])){
            return true;
        }
        // Check X-Frame-Options
        if(isset($headers[strtolower('X-Frame-Options')] &&
            (strtoupper($headers['X-Frame-Options']) == 'DENY' ||
                strtoupper($headers['X-Frame-Options']) == 'SAMEORIGIN')
            ))
        {
            return true;
        }
    } catch ( e ) {
        // Ignore error
    }
    return false;
}

Эта функция всегда дает false, даже если некоторые URL-адреса загружаются в iframe.

Кажется, что код внутри try-catch не выполняется.

...