Получить домен из вызова api с использованием php?

#php #api #dns

#php #API #dns

Вопрос:

У меня есть скрипты из внешних доменов, которые обращаются к нашему скрипту api на нашем сервере, который возвращает информацию через json. Мой вопрос в том, если кто-то отправил запрос со своего сайта на наш сайт для скрипта api, могу ли я получить URL / домен, с которого пришел запрос? Если да, то как мне это сделать? Я пытался использовать $ _SERVER для получения доменного имени, но это просто дает мне домен, на котором размещен скрипт api, на котором мы размещаем.

Я использую PHP 4.x, да, скоро будет обновление, но не сейчас.

Комментарии:

1. Будет ли это работать и для поддоменов? Или просто домен верхнего уровня? Итак, если кто-то получил доступ к api из subsite.mainsite.com будет ли это просто получить mainsite.com ? Я думаю, это зависит от ip-адреса.

Ответ №1:

Лучше всего проверить $_SERVER['HTTP_REFERER']

Комментарии:

1. Тогда я не думаю, что у вас есть много шансов узнать, из какого домена он произошел, они, вероятно, используют сервер API и не отправляют реферер. Вы могли бы реализовать систему ключей API для отслеживания того, кто использует ваш API.

2. как насчет проверки ip и выполнения gethostbyadd()

3. @G molvi: Интересная идея, но я не думаю, что вы могли бы получить домен с помощью API таким образом. Эта функция возвращает имя хоста для IP-адреса — это, вероятно, не сильно помогло бы ему в данном случае.

4. @Mick Hansen На самом деле он уже использует ключ api. Я не все объяснил в своем первоначальном сообщении. В принципе, я хочу запускать определенные функции на основе сайта, который обращается к api. Но я не хочу создавать api для каждого отдельного домена / поддомена, поэтому пытался сделать это динамически.

5. я думаю, вам нужна эта функция, поддерживаемая вашим api, тогда

Ответ №2:

Просто обратите внимание, что реферер может быть подделан, поэтому, если вы используете его для аутентификации, не делайте этого. После получения $_SERVER['HTTP_REFERER'] вы можете использовать эту функцию для разбора необходимых материалов: parse_url