Общение между сайтами (используя Javascript или?) - PullRequest
9 голосов
/ 28 августа 2008

Вот моя проблема - я хотел бы общаться между двумя сайтами, и я ищу чистое решение. Текущее решение использует Javascript, но есть неприятные обходные пути из-за (понятных) ограничений межсайтового скриптинга.

На данный момент веб-сайт A открывает модальное окно, содержащее веб-сайт B с использованием плагина jQuery , называемого jqModal . Веб-сайт B выполняет некоторую работу и возвращает некоторые результаты на веб-сайт A . Чтобы вернуть эту информацию, нам нужно обойти ограничения межсайтового скриптинга - веб-сайт B создает iframe, который ссылается на страницу на веб-сайте A и включает * идентификаторы фрагментов ", содержащие информацию для возвращаемый. iframe опрашивается веб-сайтом A для обнаружения возвращенной информации. Это распространенная техника , но она взломана.

Существуют варианты, такие как CrossSite , и, возможно, я мог бы использовать HTTP POST с веб-сайта B до веб-сайта A , но я пытаюсь избежать обновления страницы .

У кого-нибудь есть альтернативы?

РЕДАКТИРОВАТЬ: Я хотел бы избежать необходимости сохранять состояние на веб-сайте B .

Ответы [ 4 ]

5 голосов
/ 28 августа 2008

Моим лучшим предложением было бы создать веб-сервис на каждом сайте, который другой мог бы вызывать с информацией, которую необходимо передать. Если требуется безопасность, легко добавить в эту систему схему аутентификации, аналогичную SSL (или даже SSL, если хотите), чтобы гарантировать, что только два сервера могут общаться с соответствующими веб-службами.

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

3 голосов
/ 28 августа 2008

С jQuery новее 1.2 вы можете использовать JSONP

0 голосов
/ 29 августа 2008

я думаю, что @pat ссылался на это

"Начиная с jQuery 1.2, вы можете загружать данные JSON, расположенные в другом домене, если вы укажете обратный вызов JSONP" http://docs.jquery.com/Ajax/jQuery.getJSON#urldatacallback

0 голосов
/ 29 августа 2008

@ jmein - вы описали, как создать модальное всплывающее окно (именно это делает jqModal), однако вы упустили, что содержимое модального окна подается из другого домена. Два вовлеченных домена принадлежат двум отдельным компаниям, поэтому их нельзя объединить так, как вы описываете.

...