Отказался отображать «https://www.google.co.in» в фрейме, потому что он установил «X-Frame-Options» в «sameorigin» в c # asp.net [duplicate]

Вот приложение, которое я написал для чтения xml sitemaps:

  using System;  используя System.Collections.Generic;  используя System.Windows.Forms;  используя System.Linq;  используя System.Text;  используя System.Threading.Tasks;  используя System.IO;  используя System.Data;  используя System.Xml;  namespace SiteMapReader {class Program {static void Main (string [] args) {Console.WriteLine ("Пожалуйста, введите местоположение файла");  // получить местоположение, которое мы хотим получить в файлах Sitemap из строки dirLoc = Console.ReadLine ();  // получить все строки sitemaps [] sitemaps = Directory.GetFiles (dirLoc);  StreamWriter sw = новый StreamWriter (Application.StartupPath + @ "\ locs.txt", true);  // зацикливаем каждый файл foreach (строка sitemap в файлах Sitemap) {try {// новый экземпляр xdoc XmlDocument xDoc = новый XmlDocument ();  // загружаем xml из местоположения xDoc.Load (sitemap);  // цикл через каждый дочерний noed foreach (узел XmlNode в xDoc.DocumentElement.ChildNodes) {// первым узлом является url ... нужно перейти к следующему узлу loce foreach (XmlNode locNode в узле) {// имеется пару дочерних элементов  узлы здесь, поэтому берут данные только из узла с именем loc if (locNode.Name == "loc") {// получают содержимое строки loc loc loc = locNode.InnerText;  // пишем его на консоль, чтобы вы могли видеть ее рабочую консоль.WriteLine (loc + Environment.NewLine);  // записываем его в файл sw.Write (loc + Environment.NewLine);  }}}} catch {}} Console.WriteLine ("All Done :-)");  Console.ReadLine ();  } static void readSitemap () {}}}  

Код на вставке http://pastebin.com/yK7cSNeY

91
задан Drew Gaynor 8 December 2014 в 14:41
поделиться

9 ответов

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

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

enter image description here [/g1]

125
ответ дан Drew Gaynor 15 August 2018 в 15:49
поделиться
  • 1
    С YouTube вы можете изменить URL-адрес конечной точки на "embed & quot; версия. См. stackoverflow.com/questions/25661182/… (я знаю, что это не совсем то, что ищет OP, но Google дает этот результат первым!) – user 27 January 2016 в 14:56

Для этого вам нужно сопоставить местоположение в вашем 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>
0
ответ дан Ibtesam Latif 15 August 2018 в 15:49
поделиться

Решение - установить плагин для браузера.

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

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

0
ответ дан Julien Kronegg 15 August 2018 в 15:49
поделиться

не очень ... Я использовал

 <system.webServer>
     <httpProtocol allowKeepAlive="true" >
       <customHeaders>
         <add name="X-Frame-Options" value="*" />
       </customHeaders>
     </httpProtocol>
 </system.webServer>
3
ответ дан LongChalk 15 August 2018 в 15:49
поделиться

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

header always set x-frame-options "SAMEORIGIN"

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

0
ответ дан Mojtaba Rezaeian 15 August 2018 в 15:49
поделиться

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

<httpProtocol>
    <customHeaders>
      <add name="X-Frame-Options" value="*" />
    </customHeaders>
  </httpProtocol>
0
ответ дан Nikki 15 August 2018 в 15:49
поделиться

Заголовок 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>

target_url.php:

<?php 
  echo file_get_contents("http://www.example.com");
?>
49
ответ дан Rory McCrossan 15 August 2018 в 15:49
поделиться
  • 1
    Является ли это жизнеспособным решением для использования страницы после ее загрузки? Смогу ли я взаимодействовать со страницами после активной загрузки? Разве не каждый прокси для домена должен быть проксирован, чтобы использовать контент после его загрузки? – Timothy Gonzalez 10 November 2016 в 21:05

Если вы управляете сервером, который отправляет содержимое 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;

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

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

source: https://developer.mozilla.org/en-US/docs/Web / HTTP / X-Frame-Options

21
ответ дан rubo77 15 August 2018 в 15:49
поделиться
  • 1
    Это помогло мне. Я прокомментировал эти две строки: add_header Strict-Transport-Security "max-age=86400; includeSubdomains"; add_header X-Frame-Options DENY; из nginx-фрагментов, а затем он сразу сработал. – Zeth 20 October 2017 в 08:19
49
ответ дан Rory McCrossan 5 September 2018 в 14:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: