Функция безопасности всех браузеров не позволяет создавать XMLHttpRequests в других доменах. Это называется Same Origin Policy. Существует несколько способов обойти одну и ту же политику происхождения,
1. Предоставьте прокси-сервер службе, используя серверный язык.
Как правило, вы бы делать запросы непосредственно в веб-службу, которая в свою очередь, возвращает ответ, например, так:
╒═══════════════════╕ ──────────────> ╒═══════════════════╕
│ Client/Javascript │ │ Server/WebService │
╘═══════════════════╛ <────────────── ╘═══════════════════╛
проксирование включает в себя написание сценария на стороне сервера, чтобы выступать в качестве среднего человека:
╒═══════════════════╕ ────> ╒════════════════════╕ ────> ╒═══════════════════╕
│ Client/Javascript │ │ Same domain server │ │ Server/WebService |
╘═══════════════════╛ <──── ╘════════════════════╛ <──── ╘═══════════════════╛
Таким образом, браузер отправляет запрос в тот же домен, но не блокируется политикой того же происхождения. Сервер, в свою очередь, отправляет запрос удаленной веб-службе, которая возвращает ответ. Наконец, тот же сервер домена возвращает этот ответ скрипту, который все еще ждет. Это работает, потому что запросы, сделанные сервером, не подпадают под действие политики одного и того же происхождения.
2. Проверьте, поддерживает ли служба формат данных JSONP.
JSONP работает, добавляя к текущей странице элемент сценария, с атрибутом src, указывающим на веб-службу. Веб-служба возвращает ответ в виде вызова функции JavaScript с данными в литеральном объекте JavaScript, который передается в качестве аргумента функции. Все, что вам нужно сделать, это предопределить эту функцию, чтобы при завершении запроса сценария/веб-службы ваша предопределенная функция вызывается с данными, чтобы вы могли ее обработать.
спасибо за ваш ответ Энди, однако, можете ли вы прояснить, как можно «предоставить прокси-сервер для службы с использованием серверного языка»? Спасибо – Jason
@ Джейсон: извините за задержку, я был немного занят. Я обновил сообщение с дополнительной информацией и диаграммами :-) –