Перекрестная субдомен ajax longpolling - PullRequest
3 голосов
/ 13 февраля 2011

Я создаю сценарий уведомлений, который проверяет базу данных на наличие изменений и возвращает затем в настраиваемом всплывающем окне javascript.

Я успешно создал скрипт загрузки и обработки ajax jquery и страницу опроса php long.все это прекрасно работало, за исключением того, что длительный запрос не позволял работать любому другому загруженному ajax-контенту.Я обнаружил, что способ остановить это - переместить его в другой поддомен.однако это вызывает проблемы с js «Same Origin Policy», все возможные способы сделать это, кажется, не работают с длинными скоростями соединения, или другой вариант php proxy побеждает всю точку в отдельных доменах.

Кто-нибудьесть какие-либо идеи, как это сделать, или любую помощь.

Спасибо

Оли

Ответы [ 2 ]

0 голосов
/ 13 февраля 2011

Еще одна вещь, которую вы можете попробовать, это мягкий JSON.Вы можете создать динамический скрипт по некоторому URL, который принимает параметры GET, например sub.domain.com/jsonp.php?var=value, который возвращает что-то вроде:

var response={a:1,b:2}

И вы можете динамически загрузить <script/> элемент с этим URL в качестве источника.Переменная, установленная в jsonp, будет доступна для других сценариев и не подлежит SOP.

0 голосов
/ 13 февраля 2011

Нет способа решить эту проблему простым способом ... Самый простой способ, который я нашел, заключается в следующем:

Создайте IFrame (да, я знаю), этот IFrame должен загрузить страницу с поддоменом (sub.example.com/base)

На обеих страницах, главной и загруженной в IFrame, необходимо задать для document.domain значение «.example.com», после этого вы сможете

.
  1. Выполнить длительный опрос из IFrame, не занимая соединение одного из двух доменов
  2. Обмен данными между главной страницей и IFrame, так что вы можете просто оставить IFrame для длительного опроса, а затем вызвать обратный вызов для родителя

Это также решает еще одну проблему, которая возникнет у вас позже, а именно вращение вращающегося колеса с кодировкой в ​​браузере, пока не закончится первый длинный опрос ....

...