apache - protocolo - lineas de cabecera http
Por qué los subrayados están prohibidos en los nombres de encabezado HTTP (2)
Ellos no están prohibidos. Es un legado de CGI. Here
Si no establece explícitamente
underscores_in_headers on;
, nginx silenciosamente colocará encabezados HTTP con guiones bajos (que son perfectamente válidos de acuerdo con el estándar HTTP). Esto se hace con el fin de evitar ambigüedades al asignar encabezados a las variables CGI, ya que tanto los guiones bajos como los guiones bajos se asignan a guiones bajos durante ese proceso.
Hace algunos meses tuve un problema con un encabezado HTTP personalizado llamado "SESSION_ID", no transferido por el proxy nginx.
Me han dicho que los guiones bajos están prohibidos según RFC del protocolo HTTP.
Google, descubrí que la mayoría de los servidores como apache o nginx definen como ilegales.
RFC2616 sección 4.2 dice
siga el mismo formato genérico que el dado en la Sección 3.1 de RFC 822 [9]
y RFC822 dice
El nombre de campo debe estar compuesto de caracteres ASCII imprimibles (es decir, caracteres que tengan valores entre 33. y 126., decimales, excepto dos puntos)
subrayado es 95 caracteres decimales en la tabla ASCII (pertenece al rango 33-126). ¿Qué me estoy perdiendo?
Se permiten los subrayados en los campos del encabezado ( RFC 7230, sección 3.2 ), pero de hecho son poco comunes.