Estilo de salto de línea de encabezado HTTP


¿Qué estilo de salto de línea es preferible para usar en encabezados HTTP: \r\n o \n, y por qué?

Author: Shashank Agrawal, 2011-04-22

3 answers

\r\n, porque se define como el salto de línea en la especificación del protocolo. RFC2616 establece al principio de la Sección 2.2 (Reglas básicas (!)), bastante inequívocamente :

CR =
LF =
HTTP/1.1 define la secuencia CR LF como el marcador de fin de línea para todos los elementos del protocolo excepto el entity-body

Sin embargo, reconociendo que la gente romperá la estándar para cualquier propósito, hay una" disposición de tolerancia " en Sección 19.3 (tenga en cuenta que reitera la secuencia correcta):

El terminador de línea para los campos de encabezado de mensaje es la secuencia CRLF. Sin embargo, recomendamos que las aplicaciones, al analizar tales encabezados, reconozcan un solo LF como un terminador de línea e ignoren el CR principal.

Por lo tanto, a menos que quieras ser Malvado o romper las reglas de la RFC, usa \r\n.

 176
Author: Piskvor,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-04-22 16:10:26

\r \ n porque RFC 2616 lo dice (Sección 2.2, "Reglas básicas"):

HTTP / 1.1 define la secuencia CR LF como marcador de fin de línea para todos
elementos del protocolo, excepto el entidad-organismo (véase el apéndice 19.3 para
aplicaciones tolerantes). El marcador de fin de línea dentro de un entidad-organismo se define por su tipo de medio asociado, como se describe en sección 3.7.

   CRLF           = CR LF
 16
Author: SymKat,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-04-22 16:07:28

CRLF ("\r\n"), porque los navegadores siguen RFC2616.

 8
Author: Jürgen Thelen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-04-22 16:06:01