Как установить '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
)