Как установить '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 developer tools) раскрывает
X-Frame-Optionsзначение, возвращенное с хоста.
Вы, кажется, неправильно поняли проблему.
X-Frame-Options- Это заголовок, отправленный обратно с запросом на состояние, если запрошенный домен позволит себе отображаться в кадре. Он не имеет ничего общего с javascript или HTML и не может быть изменен инициатором запроса.этот сайт установил этот заголовок, чтобы запретить его отображение в
iframe. Вы ничего не можете сделать, чтобы остановить это поведение.
Если вы контролируете сервер, который отправляет содержимое 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-option в веб-конфигурации сайта, который вы хотите загрузить в iframe, как это
<httpProtocol> <customHeaders> <add name="X-Frame-Options" value="*" /> </customHeaders> </httpProtocol>
у меня была такая же проблема на моем сервере virtualmin (apache) для wordpress в подкаталоге, и ни один из вышеперечисленных ответов не мог решить проблему в моем случае и все еще получал сообщение об ошибке X-frame-options denied на консоли, пока я не попытался добавить строку ниже в на
public_html\subdirectory\(корень wordpress) каталог:header always set x-frame-options "SAMEORIGIN"и это было единственное рабочее решение в моем случае. (обратите внимание, что есть часть, содержащую
always set, а неappendилиalways append)
