Как предотвратить мою страницу сайта, которая будет загружена через сторонний кадр сайта iFrame

Как я могу узнать, что моя страница встраивается как кадр в другой сайт во время загрузки страницы? Я предполагаю, что заголовок запроса ссылающегося домена не может помочь мне здесь?Спасибо.

72
задан abovesun 24 May 2010 в 11:32
поделиться

3 ответа

Вы не можете проверить это со стороны сервера, но вы можете использовать javascript, чтобы обнаружить его после загрузки страницы. Сравните top и self , если они не идентичны, вы находитесь в кадре.

Кроме того, некоторые современные браузеры соблюдают заголовок X-FRAME-OPTIONS , который может иметь два значения:

  • DENY - предотвращает отображение страницы, если она содержится во фрейме
  • SAMEORIGIN - то же, что и выше, если страница не принадлежит к тому же домену, что и держатель набора фреймов верхнего уровня.

Пользователи включают Google Picasa, который нельзя встроить во фрейм.

Браузеры, поддерживающие заголовок, с минимальной версией:

  • IE8 и IE9
  • Opera 10.50
  • Safari 4
  • Chrome 4.1.249.1042
  • Firefox 3.6.9 (более старые версии с NoScript )
93
ответ дан 24 November 2019 в 12:33
поделиться

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 можно отключить.

40
ответ дан 24 November 2019 в 12:33
поделиться

Используйте javascript, чтобы проверить, был ли он загружен в iframe, поместив следующий скрипт в конец вашего php-файла и перенаправив его на страницу с предупреждением. или обратите внимание, что ваша страница не должна загружаться с использованием iframe.

<script type="text/javascript">
if(top.location != window.location) {
    window.location = '/error_iframe.php';
}
</script>
2
ответ дан 24 November 2019 в 12:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: