Разница между REMOTE_HOST и REMOTE_ADDR

В чем разница между этими двумя переменными?

REMOTE_HOST и REMOTE_ADDR.


person hd.    schedule 28.09.2010    source источник


Ответы (4)


REMOTE_HOST относится к имени хоста клиента (т. е. компьютера, отправляющего запрос). REMOTE_ADDR относится к IP-адресу клиента.

Бывают случаи, когда имя хоста неразрешимо, поэтому REMOTE_HOST вместо этого возвращает REMOTE_ADDR или IP-адрес.

person Ruel    schedule 28.09.2010
comment
Я хочу отметить, что можно увидеть неожиданные результаты, если посередине есть прокси-сервер. - person Dot Freelancer; 14.02.2013
comment
REMOTE_HOST также устанавливается на хост только в том случае, если HostnameLookups включен на сервере, в противном случае он всегда содержит IP-адрес. (HostnameLookups по умолчанию выключено из соображений производительности.) - person MrWhite; 14.07.2014
comment
Действительно, REMOTE_HOST может быть неразрешимым. Я видел REMOTE_HOST, отображаемый в phpinfo, но когда я позже перезагрузил страницу, он исчез. Эта проблема полностью сломала мой корневой доступ phpmyadmin, и мне пришлось заменить разрешить root с локального хоста на разрешить root с :: 1 (apache использует IPv6, поэтому 127.0.0.1 не будет работать). Есть идеи, почему REMOTE_HOST иногда недоступен? - person baptx; 24.09.2014

<сильный>1. $_SERVER['REMOTE_ADDR'] — содержит реальный IP-адрес клиента. Это самое надежное значение, которое вы можете получить от пользователя.

<сильный>2. $_SERVER['REMOTE_HOST'] — будет получено имя хоста, с которого пользователь просматривает текущую страницу. Но для того, чтобы этот сценарий работал, необходимо настроить поиск имени хоста в файле httpd.conf.

person K.Suthagar    schedule 29.12.2016
comment
Незначительный момент, но $_SERVER['REMOTE_ADDR'] — это обработанное значение PHP, хранящееся в суперглобальном файле $_SERVER. Вопрос конкретно относится к одноименным переменным сервера Apache - это не обязательно одно и то же значение (но в этом случае должно быть). например. REQUEST_URI Переменная сервера Apache и $_SERVER['REQUEST_URI'] суперглобальная переменная PHP могут сильно различаться. - person MrWhite; 27.12.2020

Из RFC-3875:

  • REMOTE_ADDR: переменная REMOTE_ADDR ДОЛЖНА быть установлена ​​на сетевой адрес клиента, отправляющего запрос на сервер.
      REMOTE_ADDR  = hostnumber
      hostnumber   = ipv4-address | ipv6-address
      ipv4-address = 1*3digit "." 1*3digit "." 1*3digit "." 1*3digit
      ipv6-address = hexpart [ ":" ipv4-address ]
      hexpart      = hexseq | ( [ hexseq ] "::" [ hexseq ] )
      hexseq       = 1*4hex *( ":" 1*4hex )
  • REMOTE_HOST: переменная REMOTE_HOST содержит полное доменное имя клиента, отправляющего запрос на сервер, если оно доступно, иначе NULL. Полные доменные имена имеют форму, описанную в разделе 3.5 RFC 1034 [17] и разделе 2.1 RFC 1123 [12]. Доменные имена не чувствительны к регистру.
The REMOTE_HOST variable contains the fully qualified domain name of
   the client sending the request to the server, if available, otherwise
   NULL.  Fully qualified domain names take the form as described in
   section 3.5 of RFC 1034 [17] and section 2.1 of RFC 1123 [12].
   Domain names are not case sensitive.

      REMOTE_HOST   = "" | hostname | hostnumber
      hostname      = *( domainlabel "." ) toplabel [ "." ]
      domainlabel   = alphanum [ *alphahypdigit alphanum ]
      toplabel      = alpha [ *alphahypdigit alphanum ]
      alphahypdigit = alphanum | "-"
person NOZUONOHIGH    schedule 04.09.2019

Удаленный: это компьютер, который находится в каком-то удаленном месте, из которого полученные данные обычно относятся к серверу в частной сети или общедоступном Интернете.

Remote_ host вместо этого вернет REMOTE_ ADDR или IP-адрес.

person Irfan deenarkhil    schedule 01.08.2019