@a_ovchinnikov
Web developer

Можно ли восстановить document.domain?

Допустим у нас есть некий сайт с доменом foo.example.com. Он занимается отображением контента через iframe либо со своего же домена, либо с домена bar.example.com.

Содержимое в iframe не самое обычное - оно пытается взаимодействовать с родительским фреймом, поэтому имеем дело с CORS.
В первом случае конечно же все работает хорошо, т.к домен один и тот же и никаких проблем нет. Для обхода CORS я решил использовать свойство document.domain. Выставляем нужное значение на странице, куда встраивается iframe и дублируем это же внутри iframe - все здорово, работает.

Проблемы начались тогда, когда оказалось, что переход от просмотра одного контента к другому должен осуществляться без перезагрузки страницы (то есть объект document не пересоздается). Причем контент, который отдается с foo.example.com уже сформирован и не умеет выставлять document.domain так, как нужно нам.
Думал получится сохранить первоначальное значение свойства document.domain и когда будет необходимо вернуть его обратно - не тут то было, браузеры так делать не дают.

Соответственно у меня вопрос - могу ли я как-то заставить браузер "сбросить" document.domain, будто я его не трогал или это вообще нереально и надо думать о другом решении?
  • Вопрос задан
  • 190 просмотров
Пригласить эксперта
Ответы на вопрос 1
AlexXYZ
@AlexXYZ
O Keep Clear O
Если вы разработчик этих доменов, то вы можете отменить CORS для них. Например, как это делается на php:

https://ru.wikipedia.org/wiki/Cross-origin_resourc...

<?php
    header("Access-Control-Allow-Origin: http://example.com");
?>


т.е. суть просто в заголовке. Не браузер запрещает кросс-доменные запросы, а сервер может не разрешать делать запросы к себе от другого домена и по-умолчанию домены не выставляют этот параметр. Но если домены ваши, то вы можете выставить им взаимные разрешения читать друг у друга.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы