Ни один из этих заголовков официально не стандартизирован. Поэтому:
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:
, поскольку он является "определяемым пользователем" заголовком.