Мне нужно определить, может ли 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
не выполняется.