Quelle est la différence entre HTTP_CLIENT_IP et HTTP_X_FORWARDED_FOR?

Je comprends qu’un en-tête HTTP_X_FORWARDED_FOR est défini par les serveurs proxy pour identifier l’adresse IP de l’hôte qui effectue la requête HTTP via le proxy. J’ai entendu des revendications que l’en-tête HTTP_CLIENT_IP est défini à des fins similaires.

  1. Quelle est la différence entre HTTP_CLIENT_IP et HTTP_X_FORWARDED_FOR ?
  2. Pourquoi aurait-on des valeurs différentes les unes des autres?
  3. Où puis-je trouver des ressources sur la définition exacte de ces en-têtes.

Aucun de ces en-têtes n’est officiellement normalisé. Donc:

  1. What is the difference between HTTP_CLIENT_IP and HTTP_X_FORWARDED_FOR? – c’est impossible à dire. Différents mandataires peuvent les mettre en œuvre ou non. Les implémentations peuvent varier d’un proxy à l’autre, et ce n’est peut-être pas le cas. Un manque de norme engendre des points d’interrogation.
  2. Why would one have different values than the other? – Voir le point 1. Cependant, d’un sharepoint vue purement pratique, la seule raison pour laquelle je vois des valeurs différentes est que plus d’un proxy est impliqué – l’en X-Forwarded-For: tête X-Forwarded-For: peut alors contenir une piste complète de la chaîne de transmission, alors que l’en Client-IP: tête Client-IP: contiendrait l’adresse IP du client. C’est de la pure spéculation, cependant.
  3. Where can I find resources on the exact definition of these headers. – Tu ne peux pas. Voir le point 1.

Il semble y avoir une sorte de norme de facto concernant l’en X-Forwarded-For: tête X-Forwarded-For: :, mais étant donné qu’il n’y a pas de RFC qui le définisse, on ne peut pas s’y fier, voir commentaire ci-dessous.

Par ailleurs, l’en Client-IP: tête Client-IP: devrait être par convention X-Client-IP: puisqu’il s’agit d’un en-tête défini par l’utilisateur.