#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