Та же политика происхождения/CORS в MVC 5

Какова политика по умолчанию в приложении asp.net mvc? Также как связаны CORS и X-Frame-Options?

Если я создам новое веб-приложение MVC (размещенное в IIS) на порту, например. 21232, я добавляю iframe в представления индекса с источником, установленным на мой локальный IIS, например.

<iframe src="http://localhost/iisstart.htm" width="800" height="100"/>

Это отлично работает (хотя и на другом порту для веб-приложения).

Если я сейчас изменю источник iframe на что-то полностью внешнее, например.

<iframe src="http://www.google.com" width="800" height="100"/>

Теперь это отображает пустой iframe. Если я загляну в инструменты разработчика Chrome (Chrome используется в обоих примерах), я увижу ошибку в консоли.

Отказался отображать 'https://www.google.co.uk' во фрейме, поскольку он установил ' X-Frame-Options» на «SAMEORIGIN».

  1. Почему первый URL-адрес работал, когда адрес находится на другом порту страницы хостинга?
  2. Как X-Frame-Options связаны с CORS? Я попытался добавить следующее в свой web.config (см. ссылку включить cors в IIS)

<add name="Access-Control-Allow-Origin" value="*" />

Что не имело значения. Похоже, мне нужно добавить следующее в Application_Start в файле global.asax.cs

AntiForgeryConfig.SuppressXFrameOptionsHeader = true;

Связаны ли X-Frame-Options с iframe?


person obaylis    schedule 09.11.2015    source источник


Ответы (1)


Я думаю, вы перепутали заголовок ответа X-Frame-Options и CORS.

Заголовок ответа X-Frames-Options используется, чтобы указать, следует ли разрешить браузеру загружать определенную страницу в файле <iframe>. CORS, с другой стороны, используется для определения того, разрешен ли XMLHttpRequest(XHR) (и некоторые другие вещи) в разных доменах.

Так что да, X-Frames-Options только <iframe> реализованы.

Причина, по которой вы можете загрузить свою страницу из http://localhost/iisstart.htm в вашем веб-приложении, работающем на порту 21232, заключается в том, что в ответе нет заголовка ответа X-Frame-Options. Вы не сможете использовать http://www.google.com, так как для параметра X-Frames-Options установлено значение SAMEORIGIN. . Это означает, что если ваш домен не google.com, вы не сможете загрузить его в <iframe>.

Добавленный вами заголовок Access-Control-Allow-Origin не имеет ничего общего с <iframe>. Вы никак не сможете загрузить http://www.google.com на свою страницу.

person Obaid    schedule 10.11.2015
comment
Хорошо, спасибо, я вижу, поэтому SuppressXFrameOptionsHeader просто позволяет разместить мой веб-сайт в iframe. Спасибо за разъяснение. - person obaylis; 10.11.2015
comment
Думаю, одним из источников путаницы было то, что я хотел получить доступ/отредактировать содержимое iframe в JavaScript. Согласно stackoverflow.com/questions/2689984/. Похоже, здесь нужно придерживаться той же политики происхождения. - person obaylis; 10.11.2015