В чем разница между HTTP_CLIENT_IP и HTTP_X_FORWARDED_FOR?

Я понимаю, что заголовок HTTP_X_FORWARDED_FOR устанавливается прокси-серверами для идентификации ip-адреса хоста, который делает HTTP-запрос через прокси-сервер. Я слышал утверждения, что заголовок HTTP_CLIENT_IP установлен для аналогичных целей.

  • В чем разница между HTTP_CLIENT_IP и HTTP_X_FORWARDED_FOR?
  • Почему у одного есть разные значения, чем другие?
  • Где я могу найти ресурсы для точного определения этих заголовков.

Ответ 1

Ни один из этих заголовков официально не стандартизирован. Поэтому:

  • What is the difference between HTTP_CLIENT_IP and HTTP_X_FORWARDED_FOR? - нельзя сказать. Различные прокси-серверы могут реализовать эти или не могут. Реализации могут отличаться от одного прокси-сервера к другому, и они могут и не быть. Отсутствие стандартных вопросительных знаков.
  • Why would one have different values than the other? - См. пункт 1. Однако, с чисто практической точки зрения, единственная причина, по которой я могу видеть, что они имеют разные значения, - это то, что было задействовано более одного прокси - заголовок X-Forwarded-For: может содержать полный трек цепочки переадресации, тогда как заголовок Client-IP: будет содержать фактический IP-адрес клиента. Однако это чистая спекуляция.
  • Where can I find resources on the exact definition of these headers. - Вы не можете. См. Пункт 1.

Кажется, что какой-то де-факто стандарт в отношении заголовка X-Forwarded-For:, но , если отсутствует RFC, который определяет его нельзя полагаться на, см. комментарий ниже.

В качестве побочного примечания заголовок Client-IP: должен быть условным, X-Client-IP:, поскольку он является "определяемым пользователем" заголовком.