Как я могу узнать, что моя страница встраивается как кадр в другой сайт во время загрузки страницы? Я предполагаю, что заголовок запроса ссылающегося домена не может помочь мне здесь?Спасибо.
Вы не можете проверить это со стороны сервера, но вы можете использовать javascript, чтобы обнаружить его после загрузки страницы. Сравните top
и self
, если они не идентичны, вы находитесь в кадре.
Кроме того, некоторые современные браузеры соблюдают заголовок X-FRAME-OPTIONS
, который может иметь два значения:
Пользователи включают Google Picasa, который нельзя встроить во фрейм.
Браузеры, поддерживающие заголовок, с минимальной версией:
Stackoverflow включает в себя JS для тестирования ( master.js
). Это соответствующая часть:
if(top!=self){
top.location.replace(document.location);
alert("For security reasons, framing is not allowed; click OK to remove the frames.")
}
Но имейте в виду, что JS можно отключить.
Используйте javascript, чтобы проверить, был ли он загружен в iframe, поместив следующий скрипт в конец вашего php-файла и перенаправив его на страницу с предупреждением. или обратите внимание, что ваша страница не должна загружаться с использованием iframe.
<script type="text/javascript">
if(top.location != window.location) {
window.location = '/error_iframe.php';
}
</script>