2010-09-30 13 views
20

Veo varios deletreos del encabezado HTTP "XFF" no RFC utilizado para identificar las direcciones IP a través de las cuales se reenvió la solicitud. ¿Hay alguna diferencia entre estos nombres de encabezado diferentes: X-FORWARDED-FOR, X_FORWARDED_FOR y HTTP_X_FORWARDED_FOR? ¿Tengo que buscar los tres?Encabezados HTTP: ¿Cuál es la diferencia entre X-FORWARDED-FOR, X_FORWARDED_FOR y HTTP_X_FORWARDED_FOR?

PS - Sí, sé que esta cabecera puede ser fácilmente falsificado :)

Respuesta

31

El prefijo HTTP_ es utilizado por algunos lenguajes como PHP simplemente para distinguir las cabeceras HTTP de otras variables de servidor:

$_SERVER['HTTP_X_FORWARDED_FOR'] 

El nombre de encabezado HTTP es en realidad

X-Forwarded-For 

El nombre de encabezado en sí es sensible a mayúsculas. Sin embargo, cuando desea consultar un encabezado de solicitud, los lenguajes de programación son en gran parte sensibles a las mayúsculas y minúsculas (una vez más, PHP es uno de ellos).

La X- indica que el encabezado Forwarded-For no es estándar. No creo que haya una diferencia si un idioma usa guiones o guiones bajos para referirse a los nombres de los encabezados.

Básicamente, todos son el mismo encabezado, a los que se hace referencia de forma diferente mediante varias implementaciones.

+7

+1. Como una adición: parece que el uso de * HTTP _ ** se originó en [El estándar Common Interface Interface (CGI)] (http://tools.ietf.org/html/rfc3875#section-4.1.18). Cita: '" Las metavariables con nombres que comienzan con "HTTP_" contienen valores leídos de los campos del encabezado de solicitud del cliente, si el protocolo utilizado es HTTP. El nombre del campo del encabezado HTTP se convierte en mayúscula, tiene todas las ocurrencias de "-" reemplazadas con "_" y tiene "HTTP_" antepuesto para dar el nombre de la metavariable. " – informatik01

+2

FTR, [RFC 7239] (https://tools.ietf.org/html/rfc7239) estandarizó la extensión HTTP reenviada. El encabezado estándar ahora está 'Reenviado: for = 1.2.3.4; proto = http' aunque nadie espera que se adopte pronto. Verifique [¿Qué es una especificación completa del encabezado X-Forwarded-Proto HTTP?] (Http://stackoverflow.com/q/13111080). – mmoya

Cuestiones relacionadas