Respuestas:
\r\n
, porque se define como el salto de línea en la especificación del protocolo. RFC2616 establece al comienzo de la sección 2.2, "Reglas básicas" , sin ambigüedades:
CR = <US-ASCII CR, retorno de carro (13)>
LF = <US-ASCII LF, salto de línea (10)>
HTTP / 1.1 define la secuencia CR LF como el marcador de fin de línea para todos los elementos del protocolo, excepto la entidad -cuerpo
RFC2616 fue técnicamente obsoleto por RFC7230, pero no hace cambios drásticos y nuevamente llama a CRLF como delimitador en la sección 3 , y ese RFC hace referencia a RFC5234, Apéndice B.1 para definir "CRLF" como %x0D %x0A
.
Sin embargo, reconociendo que las personas romperán el estándar para cualquier propósito, hay una "disposición de tolerancia" en la 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 dichos encabezados, reconozcan un solo LF como un terminador de línea e ignoren el CR principal.
En el nuevo RFC7230, § 3.5
Aunque el terminador de línea para los campos de encabezado y línea de inicio es la secuencia CRLF, un destinatario PUEDE reconocer un solo LF como un terminador de línea e ignorar cualquier CR precedente.
Por lo tanto, a menos que quieras ser malvado o de otra manera romper las reglas del RFC, úsalo \r\n
.
\ r \ n porque RFC 2616 lo dice (Sección 2.2, "Reglas básicas"):
HTTP / 1.1 define la secuencia CR LF como el marcador de fin de línea para todos los
elementos del protocolo, excepto el cuerpo de la entidad (consulte el apéndice 19.3 para
aplicaciones tolerantes). El marcador de fin de línea dentro de un cuerpo de entidad se define por su tipo de medio asociado, como se describe en la sección 3.7.CRLF = CR LF
CRLF ("\ r \ n"), porque los navegadores siguen RFC2616 .