Насколько мне известно, есть два HTTP-заголовка, которые можно использовать для предотвращения загрузки веб-сайта в качестве фрейма на другие веб-сайты:
X-Frame-Options
Заголовок ответа HTTP X-Frame-Options можно использовать, чтобы указать, разрешено ли браузеру отображать страницу в <frame>
, <iframe>
, <embed>
или <object>
.
Возможные значения:
deny
sameorigin
allow-from
uri
Вы можете узнать больше о том, что они делают на MDN .
Обратите внимание, что согласно спецификации frame-ancestors
имеет приоритет над X-Frame-Options
:
Директива frame-ancestors отменяет заголовок X-Frame-Options. Если у ресурса есть обе политики, СЛЕДУЕТ применять политику предков фреймов, а политику опций X-Frame СЛЕДУЕТ игнорировать.
Из примера, который вы опубликовали, похоже, что Facebook имеет X-Frame-Options: deny
в качестве заголовка ответа, что предотвращает его загрузку в iframe из любого места (в браузерах, которые поддерживают этот заголовок).
Content-Security-Policy
Используя либо:
frame-ancestors
, который ограничивает какие домены могут вставлять этот сайт в iframe
Директива frame-ancestors HTTP Content-Security-Policy (CSP) определяет допустимых родителей, которые могут встраивать страницу, используя <frame>
, <iframe>
, <object>
, <embed>
или <applet>
.
Основное отличие от X-Frame-Options
в том, что
многие пользовательские агенты реализуют SAMEORIGIN таким образом, чтобы он совпадал только с местоположением документа верхнего уровня. Эта директива проверяет каждого предка. Если какой-либо предок не совпадает, загрузка отменяется.
frame-src
, который ограничивает какие домены этот сайт может вставлять в iframe
Директива frame-src HTTP Content-Security-Policy (CSP) определяет допустимые источники для загрузки вложенных контекстов просмотра с использованием таких элементов, как <frame>
и <iframe>
.
Подробнее о frame-ancestors и frame-src вы можете узнать из MDN.
Из приведенного вами примера кажется, что в Twitter есть Content-Security-Policy: frame-ancestors 'self'
, что означает, что этот веб-сайт может быть встроен только в один домен.