Quel style de saut de ligne est préférable pour les en-têtes HTTP: \r\n
ou \n
, et pourquoi?
\r\n
, car il est défini comme le saut de ligne dans la spécification du protocole. La RFC2616 indique au début de la section 2.2 (Règles de base (!)), De manière tout à fait non équivoque :
CR = <CR US-ASCII, retour chariot (13)>
LF = <US-ASCII LF, saut de ligne (10)>
HTTP/1.1 définit la séquence CR LF) comme marqueur de fin de ligne pour tous les éléments de protocole à l'exception du corps de l'entité.
Cependant, reconnaissant que les utilisateurs vont enfreindre la norme à quelque fin que ce soit, il existe une "disposition de tolérance" dans Section 19. (notez qu'elle répète la valeur correcte séquence):
La terminaison de ligne pour les champs d'en-tête de message est la séquence CRLF. Cependant, nous recommandons aux applications, lors de l'analyse de tels en-têtes, de reconnaître un seul LF comme terminateur de ligne et d'ignorer le CR principal.
Par conséquent, à moins que vous ne souhaitiez être mauvais ou enfreignez les règles de la RFC, utilisez \r\n
.
\ r\n parce que le RFC 2616 le dit (Section 2.2, "Règles de base"):
HTTP/1.1 définit la séquence CR LF comme marqueur de fin de ligne pour tous
éléments de protocole sauf l'entité-corps (voir l'annexe 19.3 pour plus de détails).
applications tolérantes). Le marqueur de fin de ligne dans un corps d'entité est défini par son type de support associé, comme décrit à la section 3.7.CRLF = CR LF
CRLF ("\ r\n"), car les navigateurs suivent RFC2616 .