Как установить "X-Frame-Options" на iframe?

Если я создам iframe такой:

var dialog = $('<div id="' + dialogId + '" align="center"><iframe id="' + frameId + '" src="' + url + '" width="100%" frameborder="0" height="'+frameHeightForIe8+'" data-ssotoken="' + token + '"></iframe></div>').dialog({

как я могу исправить ошибку:

отказалась дисплей 'https://www.google.com.ua/?gws_rd=ssl' в кадре, потому что он установил "X-Frame-Options" в "SAMEORIGIN".

С помощью JavaScript?

9 ответов


вы не можете установить X-Frame-Options на iframe. Это заголовок ответа, заданный доменом, из которого вы запрашиваете ресурс (google.com.ua в вашем примере). Они установили заголовок в SAMEORIGIN в этом случае это означает, что они запретили загрузку ресурса в iframe вне их домена. Дополнительные сведения см. В разделе заголовок ответа X-Frame-Options на MDN.

быстрый осмотр заголовков (показано здесь в инструментах разработчика Chrome) показывает X-Frame-Options значение, возвращаемое от хозяина.

enter image description here


Вы, кажется, неправильно поняли проблему. X-Frame-Options - заголовок, отправленный обратно с запросом указать, позволит ли запрошенный домен отображаться в кадре. Он не имеет ничего общего с javascript или HTML и не может быть изменен инициатором запроса.

этот веб-сайт установил этот заголовок, чтобы запретить его отображение в iframe. Вы ничего не можете сделать, чтобы остановить это поведение.

дальнейшее чтение X-Frame-Options


Если вы контролируете сервер, который отправляет содержимое iframe, вы можете установить параметр для X-Frame-Options в вашем веб-сервере.

Настройка Apache

чтобы отправить заголовок X-Frame-Options для всех страниц, добавьте это в конфигурацию вашего сайта:

Header always append X-Frame-Options SAMEORIGIN

настройка nginx

чтобы настроить nginx для отправки заголовка X-Frame-Options, добавьте это в конфигурацию http, сервера или местоположения:

add_header X-Frame-Options SAMEORIGIN;

нет конфигурация

этот параметр заголовка является необязательным, поэтому, если параметр не установлен вообще, вы дадите возможность настроить его для следующего экземпляра (например, браузера посетителей или прокси-сервера)

источник:https://developer.mozilla.org/en-US/docs/Web/HTTP/X-Frame-Options


не совсем так... Я использовал

 <system.webServer>
     <httpProtocol allowKeepAlive="true" >
       <customHeaders>
         <add name="X-Frame-Options" value="*" />
       </customHeaders>
     </httpProtocol>
 </system.webServer>

заголовок HTTP-ответа X-Frame-Options может использоваться, чтобы указать, должен ли браузер иметь возможность отображать страницу в <frame>, <iframe> или <object>. Сайты могут использовать это, чтобы избежать атак clickjacking, гарантируя, что их содержимое не встроено в другие сайты.

Для Получения Дополнительной Информации: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options

у меня есть альтернативное решение этой проблемы, которое я продемонстрировать с помощью PHP:

iframe.на PHP:

<iframe src="target_url.php" width="925" height="2400" frameborder="0" ></iframe>

результаты конвертации.на PHP:

<?php 
  echo file_get_contents("http://www.example.com");
?>

решение заключается в установке плагина браузера.

веб-сайт, который выдает HTTP-заголовок X-Frame-Options стоимостью DENY (или SAMEORIGIN с другим источником сервера) не может быть интегрирован в IFRAME... если вы не измените это поведение, установив плагин браузера, который игнорирует (например,Chrome игнорирует заголовки X-Frame).

обратите внимание, что это не рекомендуется по соображениям безопасности.


для этого вам нужно соответствовать местоположению в вашем apache или любой другой службе, которую вы используете

Если вы используете Apache, то в httpd.файл conf.

  <LocationMatch "/your_relative_path">
      ProxyPass absolute_path_of_your_application/your_relative_path
      ProxyPassReverse absolute_path_of_your_application/your_relative_path
   </LocationMatch>

вы можете установить параметр X-frame в веб-конфигурации сайта, который вы хотите загрузить в iframe, как это

<httpProtocol>
    <customHeaders>
      <add name="X-Frame-Options" value="*" />
    </customHeaders>
  </httpProtocol>

у меня была та же проблема на моем сервере virtualmin (apache) для wordpress в подкаталоге, и ни один из вышеперечисленных ответов не мог решить проблему в моем случае и все еще получал сообщение об ошибке X-frame-options denied на консоли, пока я не попытался добавить ниже строку в .htaccess файл размещен на my public_html\subdirectory\(корень wordpress) каталог:

header always set x-frame-options "SAMEORIGIN"

и это было единственное рабочее решение в моем случае. (обратите внимание, что есть часть, содержащую always set, а не append или always append)