2015-09-29 3 views
1

В прошлом я могу получить доступ к свойствам и функциям в родительском окне из iframe, событие iframe - CORS. Например: window.parent.api.func(). Однако он перестал работать в последней версии Chrome. Когда я ссылаться на свойства родительского окна, я получил следующее исключение:iframe не может получить доступ к своим свойствам родительского окна

"Uncaught DOMException: Blocked a frame with origin "http://localhost:8090" from accessing a cross-origin frame.(…)" 

Я понимаю, из родительского окна, чтобы получить доступ к IFRAME мне нужно использовать PostMessage. Однако это должно быть нормально, если доступ к родительскому окну из iframe. Почему он прекратил работать?

+0

Обнаружена связанная дискуссия: http://stackoverflow.com/questions/1291812/iframe-javascript-access-parent-dom-across-domains –

+0

Теперь я считаю, что то, что я делал в прошлом, использовало обратный прокси, чтобы избежать проблема CORS. Это должно сработать. –

ответ

1

Другой порт считается другим доменом. Или используйте postMessage, как вы сказали, или убедитесь, что порты также совпадают. Также убедитесь, что вы не используете IP-адрес своего компьютера для одного и локального хоста для другого - он должен полностью соответствовать.

+0

- это CORS действительно проблема? Я считаю, что это работало. Если на самом деле CORS (на другом порту) предотвращает доступ к родительскому окну, я могу попытаться обойти его с помощью обратного прокси, но без него это намного проще, особенно во время разработки. –

+1

вы можете изменить файл hosts на своем компьютере и сделать их совпадающими. Поместите запись хоста для 'localhost: 8090 somenewname.com' и' localhost: otherport somenewname.com' Затем используйте 'somenewname.com' для обоих окон – Funkodebat

+0

спасибо за предложение. Но я не думаю, что файл hosts может иметь связанный с ним порт. Это просто преобразование имен DNS. –

Смежные вопросы