Допустим у нас есть некий сайт с доменом foo.example.com. Он занимается отображением контента через iframe либо со своего же домена, либо с домена bar.example.com.
Содержимое в iframe не самое обычное - оно пытается взаимодействовать с родительским фреймом, поэтому имеем дело с CORS.
В первом случае конечно же все работает хорошо, т.к домен один и тот же и никаких проблем нет. Для обхода CORS я решил использовать свойство document.domain. Выставляем нужное значение на странице, куда встраивается iframe и дублируем это же внутри iframe - все здорово, работает.
Проблемы начались тогда, когда оказалось, что переход от просмотра одного контента к другому должен осуществляться без перезагрузки страницы (то есть объект document не пересоздается). Причем контент, который отдается с foo.example.com уже сформирован и не умеет выставлять document.domain так, как нужно нам.
Думал получится сохранить первоначальное значение свойства document.domain и когда будет необходимо вернуть его обратно - не тут то было, браузеры так делать не дают.
Соответственно у меня вопрос - могу ли я как-то заставить браузер "сбросить" document.domain, будто я его не трогал или это вообще нереально и надо думать о другом решении?
т.е. суть просто в заголовке. Не браузер запрещает кросс-доменные запросы, а сервер может не разрешать делать запросы к себе от другого домена и по-умолчанию домены не выставляют этот параметр. Но если домены ваши, то вы можете выставить им взаимные разрешения читать друг у друга.
К сожалению, "Access-Control-Allow-Origin" отвечает лишь за возможность обращаться с определенных доменов в плане запросов. У меня же происходит кроссфреймовое JS взаимодействие, к которому данный заголовок, увы, отношения не имеет.
Myateznik: это бы решило проблему, если бы не одно но - мы получаем из iframe ссылку на конкретный объект для последующего взаимодействия с ним. postMessage не сможет нам передать объект в таком виде :(
Myateznik: да, так действительно можно сделать ) но это придется переписать очень много кода. Пока все-таки принято решение выставлять document.domain везде, где это необходимо. В любом случае, большое спасибо за Вашу помощь!