В разрешении iframe отказано в ошибке при локальной разработке: какие у меня варианты? - PullRequest
3 голосов
/ 04 июня 2010

Вот что происходит:

У меня есть приложение A, размещенное на a.mycompany.com, и приложение B, размещенное на b.mycompany.com

Приложение A содержит iframe, содержащий страницу, содержащуюся в приложении B.

<!-- In A's index.html: -->
<iframe src="http://b.mycompany.com/something.html" >

Мне нужно, чтобы родитель поговорил с iframe или iframe поговорил с родителем.

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

http://a.mycompanydev.com:1234
http://b.mycompanydev.com:5678

И это приводит к ошибке безопасности, поскольку вы не можете общаться с помощью JS с iframe из другого домена / субдомена или с помощью другого порта.

Что я могу сделать ??


Вопрос, связанный с ошибкой сервера: https://serverfault.com/questions/148171/how-to-map-localhost8080-to-simply-localhost

Ответы [ 2 ]

2 голосов
/ 04 июня 2010

В дополнение к хешу postMessage и местоположения, о котором упоминал Мэтью, вы можете рассмотреть возможность использования прокси-сервера, работающего локально.Прокси-сервер будет прослушивать порт 80 и переадресовывать на соответствующий целевой порт на основе имени домена, указанного в запросе http.Тогда вы просто заходите на свой веб-сайт в обычном режиме через порт 80, и все должно работать правильно.

2 голосов
/ 04 июня 2010

Вы можете использовать обмен сообщениями по фрагментам, который является хаком, который использует window.location.hash (часть URL после #) для общения. Эта тестовая страница имеет пример. Есть также библиотеки, такие как Dojo , которые облегчают это.

Если вам нужна только поддержка последних браузеров, вы можете использовать postMessage .

...