Что именно означает X_FRAME_OPTIONS = 'SAMEORIGIN'?
Я создал сайт на Django, который я развернул на heroku. Я хочу отобразить этот сайт в iframe на html-странице, находящейся на моем localhost. Что не получается, потому что значение по умолчанию X_FRAME_OPTIONS равно DENY
, что не разрешает этого. Когда я ищу в интернете, меня просят заменить значение DENY
на значение SAMEORIGIN
. Я узнал об официальной документации Django из этого отрывка:
Modern browsers respect the X-Frame-Options HTTP header which indicates whether a resource is allowed to load inside a frame or iframe. If the response contains the header with a value of SAMEORIGINthen the browser will only load the resource in a frame if the request comes from the same site.
Что я не понимаю, так это то, что я хочу загрузить сайт, который находится в Интернете, с веб-страницы, на которой есть iframe, и мне интересно, подразумевают ли они под этим отрывком в документе, что сайт может быть загружен веб-страницей, присутствующей на компьютере, который его развернул, или одна из веб-страниц, присутствующих на развернутом сайте, может загрузить его в iframe, чего я не понимаю, потому что мне интересно, как сайт может загрузить себя в iframe. Мне особенно интересно, может ли этот заголовок позволить мне загрузить мой сайт в веб-страницу, зная, что эта веб-страница не была развернута в отличие от сайта.
Современные браузеры уважают директиву Content-Security-Policy frame-ancestors. С уходом IE отпала необходимость в негибком X-Frame-Options.
Подробнее о том, как реализовать, смотрите ответы на этот вопрос: Как настроить X-Frame-Options в Django, чтобы разрешить встраивание iframe в одно представление?. Вы можете использовать примеры для отключения X-Frame-Options, но реализация CSP frame-ancestors сделает его устаревшим во всех браузерах, кроме IE.
Значение для frame-ancestors может быть установлено на localhost:* или 127.0.0.1.