web-dev-qa-db-fra.com

Style de saut de ligne d'en-tête HTTP

Quel style de saut de ligne est préférable pour les en-têtes HTTP: \r\n ou \n, et pourquoi?

154
dpq

\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.

211
Piskvor

\ 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
22
SymKat

CRLF ("\ r\n"), car les navigateurs suivent RFC2616 .

13
Jürgen Thelen