2009-05-30 6 views
0

API-интерфейс API Карт Google GGeoXML имеет возможность доступа к файлам междоменного XML (обычно KML или GeoRSS). Он не использует XmlHttpRequest, потому что он исключает исключение «Access to limited URI denied» (как предполагается). Кроме того, он не использует оболочку GXmlHttp Google, потому что я попытался, и он выбрал исключение, исключенное из URI.Как GGeoXML поддерживает междоменные XML-файлы?

Итак, GGeoXML не использует XMLHttpRequest и GXMLHttp-оболочку Google. Как GGeoXML поддерживает междоменные XML-файлы?

+0

дубликат http://stackoverflow.com/questions/926137/why-dont-i-get-a-same-origin-policy-warning-when-using-the-google-maps-api/926215#926215 –

+0

, так как я понял, что GoogleMaps использует «скриптовый тег hack» для загрузки моего внешнего XML-файла. Он вставляет скрипт src с его прокси-сервером, который затем загружает мой внешний KML и доставляет клиенту. Преобразует ли он между XML и JSON? –

+0

сценарий, который они включают, просто будет объектом javascript, который им нужен, и их пользовательское событие будет запущено. Преобразование xml в json, безусловно, может быть выполнено на стороне клиента (google «xml to json javascript converter») –

ответ

1

Если у вас есть do хотите получить междоменные данные через AJAX, способ сделать это с помощью JSONP. Это, по сути, объект JSON, завернутый в вызов функции. Когда объект JSONP возвращается на ваш сервер, функция выполняется и анализирует JSON внутри него обратно в жизнеспособный объект.

JSONP был создан специально с целью избежать междоменного ограничения AJAX.

1

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

JS-вызов «fetchData» вызывает веб-службу в том же домене, в котором размещается js. Этот бэкэнд-прокси выходит из «кросс-домена» и обращается к другой информации, анализирует его и возвращает его функции обратного вызова вызова «fetchData».