2009-05-30 10 views
0

GoogleマップのAPIオブジェクトGGeoXMLはクロスドメインXMLファイル(通常はKMLまたはGeoRSS)にアクセスできます。 XmlHttpRequestは "制限されたURIへのアクセスが拒否されました"という例外を送出するため、XmlHttpRequestは使用されません。また、GoogleのGXmlHttpラッパーは使用していません。同じURI拒否例外が送出されたためです。GGeoXMLはクロスドメインXMLファイルにどのようにアクセスしますか?

GGeoXMLはXMLHttpRequestやGoogleのGXMLHttpラッパーを使用しません。 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は外部XMLファイルを読み込むために 'script tag hack'を使います。プロキシサーバーにスクリプトsrcを挿入し、外部のKMLをロードしてクライアントに配信します。それはXMLとJSONの間で変換されますか? –

+0

これらのスクリプトに含まれるスクリプトは、必要なjavascriptオブジェクトになり、カスタムイベントが発生します。 xmlからjsonへの変換は、確実にクライアント側で行うことができます(google 'xml to json javascript converter') –

答えて

1

を実行する場合は、AJAXを介してクロスドメインデータを取得したい場合は、JSONPを使用します。基本的には、関数呼び出しでラップされたJSONオブジェクトです。 JSONPオブジェクトがサーバーに返されると、その関数が実行され、その内部のJSONを解析して実行可能なオブジェクトに戻します。

JSONPは、AJAXのドメイン間制限を回避する目的で作成されたものです。

1

このデータ 'クロスドメイン'にアクセスするプロキシがバックエンドにあります。これにより、ブラウザのクロスドメインセキュリティ機能が回避されます。

JS呼び出し「fetchData」は、jsがホストされているのと同じドメイン上のWebサービスを呼び出します。このバックエンドプロキシは、 'クロスドメイン'から出て他の情報にアクセスし、それを解析して 'fetchData'呼び出しのコールバック関数に返します。