xff remote http_x_forwarded_for headers address http proxy header ip-address

remote - http_x_forwarded_for c#



¿Cuál es la diferencia entre HTTP_CLIENT_IP y HTTP_X_FORWARDED_FOR? (1)

Entiendo que los servidores proxy configuran un encabezado HTTP_X_FORWARDED_FOR para identificar la dirección IP del host que realiza la solicitud HTTP a través del proxy. Escuché que el encabezado HTTP_CLIENT_IP está configurado para propósitos similares.

  1. ¿Cuál es la diferencia entre HTTP_CLIENT_IP y HTTP_X_FORWARDED_FOR ?
  2. ¿Por qué uno tendría valores diferentes a los demás?
  3. ¿Dónde puedo encontrar recursos sobre la definición exacta de estos encabezados?

Ninguno de estos encabezados está oficialmente estandarizado. Por lo tanto:

  1. What is the difference between HTTP_CLIENT_IP and HTTP_X_FORWARDED_FOR? - Es imposible decirlo. Diferentes proxies pueden implementar estos, o no. Las implementaciones pueden variar de un proxy al siguiente, y es posible que no. La falta de un estándar genera signos de interrogación.
  2. Why would one have different values than the other? - Ver punto 1. Sin embargo, desde un punto de vista puramente práctico, la única razón que puedo ver para que estos tengan diferentes valores es si se involucró más de un proxy - el encabezado X-Forwarded-For: podría contener una pista completa de la cadena de reenvío, mientras que el encabezado Client-IP: contendrá la IP del cliente real. Esto es pura especulación, sin embargo.
  3. Where can I find resources on the exact definition of these headers. - No puedes. Ver el punto 1.

Parece que hay algún tipo de estándar de facto con respecto al encabezado X-Forwarded-For: pero dado que no existe un RFC que lo defina, no se puede confiar en él, vea el comentario a continuación.

Como nota al margen, el encabezado Client-IP: debe ser por convención X-Client-IP: ya que es un encabezado "definido por el usuario".