Получение исходного имени хоста, когда сайт выполняет вызов API Карт Google к данным моего сервера

Я создаю API, и у меня есть вопрос о том, как отслеживать/узнавать, какие домены используют вызов, после того как KML будет получен серверами Google для рендеринга.

Так, например, мой домен, обслуживающий PHP-файл API, называется dev.yourmapper.com. Кто-то в домене www.metromapper.org создает страницу, которая создает карту Google, и вызывает мой файл, используя Ajax, чтобы наложить мои данные на свою карту. Google захватывает этот файл KML, а затем возвращает его пользователю.

Вот этот пример в действии: http://www.metromapper.org/example/apitest.htm

(Щелкните маркер в центре карты, чтобы увидеть всплывающее окно со всеми переменными сервера PHP, доступными для скрипта yourmapper.com.)

Поскольку Google захватывает его, я не могу использовать PHP-переменные REMOTE_HOST или REMOTE_ADDR для получения информации о сайте «metromapper.org». Они говорят мне только IP-адреса Google.

Так есть ли другой способ получить эти данные? Гугл случайно не возвращает его где-то в шапке? Любые идеи о том, как отслеживать или передавать исходное имя удаленного хоста, чтобы я мог получить его при совершении вызова? Спасибо, я понимаю, что это не может быть решено.

К вашему сведению, я тоже разместил этот вопрос здесь, но это было до того, как я узнал, что это IP-адрес Google на удаленном хосте: Получение домена, который вызывает файл PHP на вашем сервере через AJAX


person Michael S    schedule 04.08.2011    source источник


Ответы (2)


Вы можете создать свой URL-адрес KML следующим образом:

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

Затем ваш сервер получит имя хоста текущей страницы в качестве параметра CGI, который он может записать.

Обратите внимание, что это влияет на кеширование: каждый сайт, который встраивает ваш KML-файл, будет добавлять другой параметр вызывающего абонента, поэтому Google не сможет обмениваться кэшированными копиями KML между несколькими сайтами. Это может повлиять на производительность.

Лучшей стратегией может быть вызов AJAX к вашему домену каждый раз, когда кто-то загружает файл KML, например:

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

LogQuery будет использовать AJAX или аналогичный метод для отправки идентификатора слоя KML и текущего имени хоста на ваш сервер. Затем ваш сервер может отслеживать это.

person plexer    schedule 14.08.2011
comment
Спасибо, это обе отличные идеи. На самом деле я делаю что-то подобное в своих виджетах карты. Однако в этом случае у меня нет никакого контроля над Javascript на странице, которая вызывает мой единственный KML-файл. Разработчик просто вызывает мой файл KML непосредственно в своем собственном коде Javascript. Этот динамический файл KML — единственное, к чему у меня есть доступ — я могу запускать PHP-код, когда он вызывается. Любые идеи по этому поводу? Я думаю, что решение будет иметь какое-то отношение к Google, где вы можете пройти или захватить исходный домен. - person Michael S; 16.08.2011

Похоже, это невозможно FYI. Невозможно передать такой фрагмент данных в API Google и вернуть его обратно во все данные.

person Michael S    schedule 21.01.2012