Загрузка содержимого внешнего iframe локально

0

Я делаю эксперимент локально, чтобы попытаться понять, как политика Cross Origin работает с iframes:

  • У меня есть простая страница, обслуживаемая локально с iframe, указывающим на http://edition.cnn.com/
  • Я изменил файл hosts на своем компьютере, чтобы указать localhost на mytest.cnn.com

В соответствии с определением политики Cross Origin, если я попытаюсь получить доступ к элементу из iframe со страницы (теперь он отправлен с mytest.cnn.com), он должен работать, но я все равно получаю ту же ошибку "Заблокирован кадр с происхождение " http://mytest.cnn.com " от доступа к кадру с перекрестным началом ".

Я также попытался изменить домен страницы на "cnn.com", но я получаю тот же результат. Есть ли какой-либо специальный случай, потому что я обслуживаю страницу с локального сервера?

Теги:
iframe
cross-domain

1 ответ

1

В определении в описании политики того же происхождения, которое вы связывали в своем вопросе, говорится:

Две страницы имеют одинаковое происхождение, если протокол, порт (если он указан) и хост одинаковы для обеих страниц.

В вашем случае два хоста

  • edition.cnn.com
  • mytest.cnn.com

не соответствуют. В соответствии с примерами определения для разных поддоменов нет соответствующих хостов.

Если ваш iframe укажет на страницу на одном и том же поддомене (т.е. mytest.cnn.com/iframe.html), все должно работать.

  • 0
    Ах, совершенно верно, я пропустил эту часть. С другой стороны, я также пытался с поддоменом (my.edition.cnn.com), и он тоже не работал ...
  • 0
    Как я понимаю описание, домен (включая все поддомены) должен точно соответствовать. Таким образом, поддомен не будет работать. Но если вы используете домен my.edition.cnn.com, вы можете изменить происхождение страницы, содержащей iframe. Попробуйте команду "document.domain = 'edition.cnn.com';". Это описано в разделе «Изменение происхождения»
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню