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

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

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

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

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

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

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

Давайте будем гением компьютера.