Я пишу крошечную веб-страницу, цель которой состоит в том, чтобы создать несколько других страниц, просто объединяя их в одно окно браузера для удобства просмотра. На нескольких страницах, которые я пытаюсь создать, запрещается создание рамок, и выдается «Отказ от отображения документа, потому что отображение запрещено X-Frame-Options». ошибка в Chrome. Я понимаю, что это ограничение безопасности (по уважительной причине), и у меня нет доступа для его изменения.
Есть ли какой-нибудь альтернативный способ кадрирования или не кадрирования для отображения страниц в одном окне, которые не будут отключены заголовком X-Frame-Options?
iframe
frames
x-frame-options
Гарен Чекли
источник
источник
Ответы:
У меня была похожая проблема, когда я пытался отобразить контент с нашего собственного сайта в iframe (как диалог в стиле лайтбокса с Colorbox ) и где у нас был общесерверный заголовок «X-Frame-Options SAMEORIGIN» на исходный сервер не позволяет загрузить его на наш тестовый сервер.
Кажется, это нигде не задокументировано, но если вы можете редактировать страницы, которые вы пытаетесь встроить (например, это ваши собственные страницы), просто отправка другого заголовка X-Frame-Options с любой строкой вообще отключает команды SAMEORIGIN или DENY.
например. для PHP, положить
в верхней части вашей страницы браузеры объединят два, что приведет к заголовку
... и позволяет загрузить страницу в фрейме. Похоже, это работает, когда начальная команда SAMEORIGIN была установлена на уровне сервера, и вы хотите переопределить ее в постраничном случае.
Всего наилучшего!
источник
X-Frame-Options: SAMEORIGIN
нет способа сделать это внутри фрейма. Вы должны использовать всплывающее окно.header_remove
функцию, если она у вас есть (> = 5.3.0).Header always unset X-Frame-Options
GOFORIT
(или другой случайный произвольный неверный токен) намеренно нарушает меру безопасности, применяемую сервером; если вы сами управляете сервером (что вы должны делать для любой реальной общедоступной службы), то правильной вещью будет то, что сервер просто не устанавливает заголовок.Если вы получаете эту ошибку для видео YouTube, вместо использования полного URL-адреса используйте URL-адрес для встраивания из параметров общего доступа. Это будет выглядеть
http://www.youtube.com/embed/eCfDxZxTBW4
Вы также можете заменить
watch?v=
сembed/
такимhttp://www.youtube.com/watch?v=eCfDxZxTBW4
становитсяhttp://www.youtube.com/embed/eCfDxZxTBW4
источник
Если вы получаете эту ошибку при попытке встроить карту Google в
iframe
, вам необходимо добавить&output=embed
ссылку на источник.источник
&output=embed
UPDATE 2019: Вы можете шунтирование
X-Frame-Options
в<iframe>
использовании только на стороне клиента JavaScript , и мой X-Frame-байпас Web Component. Вот демо: Хакер Новости вX-Frame-Bypass
. (Проверено в Chrome и Firefox.)источник
Добавление
чтобы моя ссылка во вкладке facebook исправила проблему для меня ...
источник
Существует плагин для Chrome, который удаляет эту запись заголовка (только для личного использования):
https://chrome.google.com/webstore/detail/ignore-x-frame-headers/gleekbfjekiniecknbkamfmkohkpodhe/reviews
источник
Если вы получаете эту ошибку при попытке встроить контент Vimeo, измените src iframe
с: https://vimeo.com/63534746
на: http://player.vimeo.com/video/63534746
источник
У меня была такая же проблема, когда я пытался встроить Moodle 2 в iframe, решение
Site administration ► Security ► HTTP security
и проверитьAllow frame embedding
источник
Это решение, ребята!
Единственное, что сработало для приложений Facebook!
источник
Похоже, что X-Frame-Options Allow-From https: // ... устарела и была заменена (и игнорируется), если вы используете Content-Security-Policy вместо этого заголовок .
Вот полная ссылка: https://content-security-policy.com/
источник
Решение для загрузки внешнего веб-сайта в iFrame, даже если параметр x-frame отключен на внешнем веб-сайте.
Если вы хотите загрузить другой сайт в iFrame, и вы получите
Display forbidden by X-Frame-Options”
ошибку, вы можете фактически преодолеть это, создав прокси-скрипт на стороне сервера.src
Атрибут плавающего фрейма может иметь URL вида:/proxy.php?url=https://www.example.com/page&key=somekey
Тогда proxy.php будет выглядеть примерно так:
Это обходит блок, потому что это всего лишь запрос GET, который также мог бы быть обычным посещением страницы браузера.
Имейте в виду: вы можете улучшить безопасность в этом скрипте. Потому что хакеры могут начать загрузку на веб-страницах через ваш прокси-скрипт.
источник
Я перепробовал почти все предложения. Однако единственное, что действительно решило проблему, было:
Создайте
.htaccess
в той же папке, где лежит ваш файл PHP.Добавьте эту строку в htaccess:
Header always unset X-Frame-Options
Встраивание PHP с помощью iframe из другого домена должно работать позже.
Кроме того, вы можете добавить в начало вашего файла PHP:
Что, однако, не было необходимости в моем случае.
источник
У меня была такая же проблема с MediaWiki, это было потому, что сервер запретил встраивание страницы в iframe по соображениям безопасности.
Я решил это писать
в файл конфигурации MediaWiki PHP.
Надеюсь, поможет.
источник
FWIW:
У нас была ситуация, когда нам нужно было убить нашего,
iFrame
когда появился этот код «взломщика». Итак, я использовал PHP,function get_headers($url);
чтобы проверить удаленный URL, прежде чем показывать его вiFrame
. Для повышения производительности я кэшировал результаты в файл, чтобы не устанавливать HTTP-соединение каждый раз.источник
Я использовал Tomcat 8.0.30, ни одно из предложений не сработало для меня. Поскольку мы собираемся обновить
X-Frame-Options
и установить егоALLOW
, вот как я настроил разрешение на встраивание iframes:источник
Единственный вопрос, который имеет кучу ответов. Добро пожаловать в руководство, которое мне хотелось бы иметь, когда я боролся за это, чтобы заставить его работать в 10:30 ночи в последний день ... FB делает некоторые странные вещи с приложениями Canvas, и, ну, вы были предупреждены. Если вы все еще здесь и у вас есть приложение Rails, которое появится за Facebook Canvas, вам понадобится:
Gemfile:
конфиг / facebook.yml
конфиг / application.rb
конфиг / Инициализаторы / omniauth.rb
application_controller.rb
Вам нужен контроллер для вызова из настроек холста Facebook, я использовал
/canvas/
и сделал маршрут основнымSiteController
для этого приложения:login.html.erb
источники
источник
TARGET = "_ родителя
Используя идею Кевина Веллы, я попытался добавить этот атрибут к элементам формы, созданным генератором кнопок PayPal. У меня получилось так, что Paypal не открывается в новом окне / вкладке браузера.
источник
Я не уверен, насколько это актуально, но я нашел обходной путь к этому. На моем сайте я хотел отобразить ссылку в модальном окне, содержащем iframe, который загружает URL.
То, что я сделал, я связал событие click ссылки с этой функцией javascript. Все это делает запрос к файлу PHP, который проверяет заголовки URL для X-FRAME-Options, прежде чем решить, загружать ли URL в модальном окне или перенаправлять.
Вот функция:
Вот код файла PHP, который проверяет это:
Надеюсь это поможет.
источник
Я столкнулся с этой проблемой при запуске веб-сайта WordPress. Я пробовал все виды вещей, чтобы исправить это, и не был уверен, как, в конечном счете, проблема заключалась в том, что я использовал переадресацию DNS с маскированием, а ссылки на внешние сайты не обрабатывались должным образом. т. е. мой сайт был размещен по адресу http: //123.456.789/index.html, но был замаскирован для работы по адресу http://somewebSite.com/index.html . Когда я вошел http: //123.456.789/index.html в браузере, щелкнув по этим же ссылкам, я не обнаружил проблем с X-frame- в консоли JS, но запустил http://somewebSite.com/index.html.сделал. Чтобы правильно замаскировать, вы должны добавить DNS-серверы вашего хоста в службу вашего домена, т.е. у godaddy.com должны быть серверы имен, например, ns1.digitalocean.com, ns2.digitalocean.com, ns3.digitalocean.com, если вы были используя digitalocean.com в качестве хостинга.
источник
remove_action( 'admin_init', 'send_frame_options_header',10);
чтобы обойти эту проблему ...Удивительно, что никто здесь никогда не упоминал
Apache
настройки сервера (*.conf
файлы) или.htaccess
сам файл как причину этой ошибки. Выполните поиск по файлам.htaccess
илиApache
файлам конфигурации, убедившись, что для вас не установлено следующее значениеDENY
:Header always set X-Frame-Options DENY
Изменяя его
SAMEORIGIN
, заставляет вещи работать как положено:Header always set X-Frame-Options SAMEORIGIN
источник
Единственный реальный ответ, если вы не контролируете заголовки вашего источника, который вы хотите в своем iframe, - это прокси. Пусть сервер выступит в роли клиента, получит источник, удалит проблемные заголовки, добавит CORS, если необходимо, и затем пингует ваш собственный сервер.
Есть еще один ответ, объясняющий, как написать такой прокси. Это не сложно, но я был уверен, что кто-то должен был сделать это раньше. По какой-то причине это было просто трудно найти.
Я наконец нашел некоторые источники:
https://github.com/Rob--W/cors-anywhere/#documentation
^ предпочтительнее. Если вам нужно редкое использование, я думаю, вы можете просто использовать его приложение heroku. В противном случае, это код для запуска самостоятельно на вашем собственном сервере. Обратите внимание, каковы пределы.
whateverorigin.org
^ Второй выбор, но довольно старый. предположительно более новый выбор в python: https://github.com/Eiledon/alloworigin
тогда есть третий выбор:
http://anyorigin.com/
Который, кажется, допускает небольшое бесплатное использование, но помещает вас в публичный список позора, если вы не платите и используете какую-то неуказанную сумму, с которой вы можете быть удалены, только если вы заплатите комиссию ...
источник
Не упоминается, но может помочь в некоторых случаях:
источник
Используйте эту строку, приведенную ниже, вместо
header()
функции.источник
у меня была эта проблема, и я решил ее, отредактировав httd.conf
я поменял SAMEORIGIN на GOFORIT и перезапустил сервер
источник
Попробуйте это, я не думаю, что кто-то предлагал это в теме, это решит как 70% вашей проблемы, для некоторых других страниц вам придется отказаться, у меня есть полное решение, но не для общественности,
ДОБАВИТЬ ниже в свой iframe
sandbox = "allow-same-origin-allow-scripts allow-popups allow-формы"
источник
Отредактируйте .htaccess, если вы хотите удалить X-Frame-Options из всего каталога.
И добавьте строку: Заголовок всегда сбрасывает X-Frame-Options
[содержание из: Преодоление «Отображение запрещено X-Frame-Options»
источник