Мой собственный контент не загружается в iframe из-за рамок из разных источников - PullRequest
0 голосов
/ 23 мая 2019

Я занимаюсь разработкой простой функции, позволяющей моим партнерам (другим веб-сайтам) размещать наш контент на своих веб-сайтах в рамках iframe.

Я тестирую, и некоторые страницы разрешены, но некоторые запрещены.

Например:

<iframe frameborder="0" height="500" width="900" src="https://www.mywebsite.com"></iframe>

выдает консольную ошибку:

Load denied by X-Frame-Options: https://www.mywebsite.com/ does not permit cross-origin framing.

при этом:

<iframe frameborder="0" height="500" width="900" src="https://www.mywebsite.com/experience/"></iframe>

рендерится без проблем.

В чем может быть проблема?

Могу ли я явно разрешить рендеринг своего контента в iframe из внешнего источника?Как это сделать?

РЕДАКТИРОВАТЬ

Мой web.config теперь выглядит так:

<httpProtocol>
  <customHeaders>
    <remove name="X-Powered-By" />
  <add name="Cache-Control" value="public" />
    <add name="Access-Control-Allow-Origin" value="*" />
  </customHeaders>
</httpProtocol>

Но это все равно не работает,например.он не позволяет видеть содержимое iframe.

Я проверил сетевой ответ и заметил, что в обоих запросах iframe заголовок установлен правильно:

access-control-allow-origin *

, однако в первом первомВ запросе iframe я получаю дополнительно следующее:

x-frame-options SAMEORIGIN

в то время как во втором (опыт) * ​​1036 * вообще не установлено.

После добавления этого к web.config:

<add name="X-Frame-Options" value="ALLOW-FROM *" />

оба iframes возвращают консольную ошибку о запрещении перекрестного происхождения, и во втором случае

x-frame-options SAMEORIGIN

не удаляется, просто добавляется

x-frame-options ALLOW-FROM *

.

РЕДАКТИРОВАТЬ 2

Я попытался удалить x-frame-options в web.config и также убедился, что он не установлен в IIS для сайта, но все ещеон сохраняется, когда я получаю URL:

<httpProtocol>
  <customHeaders>
    <remove name="X-Powered-By" />
    <remove name="X-Frame-Options" />
    <add name="Cache-Control" value="public" />
    <add name="Access-Control-Allow-Origin" value="*" />
    <!--<add name="X-Frame-Options" value="ALLOWALL" />-->
  </customHeaders>
</httpProtocol>

enter image description here

Я пытался добавить x-frame-options ALLOWALL, как вы можете видеть выше (я прокомментировал этотогда) но это не удалило x-frame-options SAMEORIGIN

1 Ответ

0 голосов
/ 24 мая 2019

Вы можете настроить свой сервер для предоставления правильных заголовков http для разрешения CORS. Это решит вашу проблему. Смотрите здесь для получения дополнительной информации: https://enable -cors.org / server.html

Способ работы CORS состоит в том, чтобы убедиться, что два домена или субдомена, с которыми вы пытаетесь работать (т. Е. Ваш сайт + https://www.mywebsite.com), предназначены для совместного использования. Если это не В этом случае вы могли бы пострадать от атаки, когда ваш интернет-банкинг размещался в iframe, но был обернут родительским контентом и т. д., что способствовало бы низкому доверию пользователей.

Как правило, когда вы настраиваете CORS, вы видите заголовки, отмеченные в этой статье здесь: https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS#Access-Control-Allow-Origin, который добавляет:

Access-Control-Allow-Origin: *

Звездочка позволяет всем другим сайтам оборачивать этот контент в iframe и т. Д., Но вы можете использовать определенные доменные имена, чтобы только ваш сайт мог встраивать этот контент.

...