2011-08-04 3 views
0

私はAPIを構築しています.KMLの取得後にどのドメインが呼び出しを使用するかを知る方法を知りたいレンダリングするGoogleのサーバーサイトがGoogle Maps APIから自分のサーバーデータを呼び出すときの元のホスト名の取得

たとえば、API PHPファイルを提供している私のドメインは、dev.yourmapper.comと呼ばれています。ドメインwww.metromapper.orgの誰かがGoogleマップを作成するページを作成し、Ajaxを使用して自分のファイルを呼び出して自分のマップにデータをオーバーレイします。 GoogleはそのKMLファイルを取得し、それをユーザーに返します。ここで

は、アクションにその例です。http://www.metromapper.org/example/apitest.htm

(。yourmapper.comスクリプトで使用可能なすべてのPHPサーバー変数のポップアップを見て、中心マップマーカーをクリックしてください)

Googleはそれをつかんでいるので、私は 'metromapper.org'サイト情報を取得するためにPHP変数REMOTE_HOSTまたはREMOTE_ADDRを使用することはできません。彼らはGoogleのIPだけを教えてくれる。

このデータを取得するには別の方法がありますか? Googleはどこかのヘッダーに戻ってきますか?発信元のリモートホスト名を追跡する方法や渡す方法に関するアイデアがありますので、コールが行われたときに取得できますか?ありがとう、私はこれが解決できないかもしれないと思います。

FYI、私もここにこの質問を投稿が、私はそれがリモートホストにGoogleのIPを知っていた前に、それはだった: Getting the domain that calls an PHP file on your server through AJAX

答えて

0

はあなたがそうのようなあなたのKMLのURLを構築することができます:

var layer = new KMLLayer("http://yoursite.com?caller=" + window.location.host); 

サーバーは、現在のページのホスト名をCGIパラメーターとして渡します。このパラメーターは記録できます。

キャッシングには意味があります.KMLファイルを埋め込んだサイトには、別の呼び出し元パラメータが追加されるため、複数のサイト間でKMLのキャッシュされたコピーを共有することはできません。これはパフォーマンスに影響する可能性があります。

より良い戦略は、例えば、あなたのドメインへのAJAX呼び出しに誰かがKMLファイルをロードするたびに作成することがあります

var layer = new KmlLayer("nice_cachable_url"); 
LogQuery(layer, window.location.host); 

LogQueryは、KMLレイヤのIDと現在を送信するためにAJAXまたは類似の技術を使用しますサーバーへのホスト名。サーバーはこれを追跡できます。

+0

ありがとう、これらはどちらも素晴らしいアイデアです。私はマップウィジェットで実際に何か似ています。しかし、この場合、私は特定のKMLファイルを呼び出すページのJavascriptを制御することはできません。開発者は自分のJavascriptコードで直接KMLファイルを呼び出すだけです。そのダイナミックなKMLファイルは私がアクセスできる唯一のものです - 呼び出されたときにPHPコードを実行できます。これに関するアイデア?その解決策は、Googleを元通りにしたり、元のドメインを掴むことができるGoogleと関係していると私は考えている。 –

0

FYIはこれが可能ではないようです。このようなデータをGoogleのAPIに渡して、データ全体に戻す方法はありません。

関連する問題