междоменный XMLHttprequest - PullRequest
5 голосов
/ 29 июня 2010

Вот моя ситуация:

У меня есть компьютер веб-сервера, клиентский компьютер и третий компьютер, на котором запущена программа, которая прослушивает XMLHttpRequests.

Клиент обращается к веб-серверу с клиентского компьютера,вносит некоторые изменения, а затем нажимает «Сохранить».На этом этапе данные отправляются обратно на веб-сервер и на третий компьютер.Все это делается с использованием Javascript и объекта XMLHttpRequest.

Публикация на веб-сервере работает нормально, однако публикация на третьей машине не работает, поскольку у нее был другой IP / домен.

Как я могу заставить эту работу?Клиентский компьютер -> Третий компьютер не работает, потому что он находится на другом сервере веб-сервера домена -> Третий компьютер не работает, из-за проблем с брандмауэром

Любые идеи приветствуются!

Ответы [ 4 ]

3 голосов
/ 11 марта 2012

Вы можете внедрить CORS ( Обмен ресурсами между источниками ) на вашем сервере.

Текущие версии основных настольных браузеров уже некоторое время поддерживают его, Opera и Explorer 10 являются последними, добавившими поддержку.

Я не уверен, насколько широко поддерживается CORS в мобильных браузерах в настоящее время.

3 голосов
/ 29 июня 2010

То, с чем вы сталкиваетесь, - это Та же политика происхождения , а не проблемы с брандмауэром.

Если машины совместно используют домен верхнего уровня, вы можете установить их свойства document.domain равными :

Два сайта с общим верхним уровнем Домен может общаться, несмотря на Сбой проверки «того же хоста» взаимно устанавливая их соответствующие свойство DOM document.domain для тот же квалифицированный, правый фрагмент их текущее имя хоста.

В противном случае вам может понадобиться настроить первый хост на передачу запроса на другой хост .

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

Вы также можете использовать iframe hack . Iframe, размещенный во втором домене, может быть отображен на странице, размещенной в первом домене, и объект окна для iframe будет доступен из контекста родительской страницы.

1 голос
/ 30 июня 2010

Другой вариант (который, правда, немного технический) - использовать YQL , если данные не конфиденциальны. Вы можете использовать YQL & JSON-P , чтобы также получать данные из других доменов.

...