Quel style de saut de ligne est préférable pour une utilisation dans les en-têtes HTTP: \r\n
ou \n
, et pourquoi?
la source
Quel style de saut de ligne est préférable pour une utilisation dans 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 déclare au début de la section 2.2, «Règles de base» , sans ambiguïté:
CR = <US-ASCII CR, retour chariot (13)>
LF = <US-ASCII LF, linefeed (10)>
HTTP / 1.1 définit la séquence CR LF comme marqueur de fin de ligne pour tous les éléments du protocole à l'exception de l'entité -corps
La RFC2616 était techniquement obsolète par la RFC7230, mais elle n'apporte aucun changement radical et appelle à nouveau CRLF comme délimiteur dans la section 3 , et que la RFC fait référence à RFC5234, Annexe B.1 pour définir "CRLF" comme %x0D %x0A
.
Cependant, reconnaissant que les gens enfreindront la norme à quelque fin que ce soit, il existe une «disposition de tolérance» à l' article 19.3 (notez qu'elle réitère la séquence correcte ):
Le terminateur de ligne pour les champs d'en-tête de message est la séquence CRLF. Cependant, nous recommandons que les applications, lors de l'analyse de ces en-têtes, reconnaissent un seul LF comme terminateur de ligne et ignorent le CR de tête.
Dans la nouvelle RFC7230, § 3.5
Bien que le terminateur de ligne pour les champs de ligne de début et d'en-tête soit la séquence CRLF, un destinataire PEUT reconnaître un seul LF comme terminateur de ligne et ignorer tout CR précédent.
Par conséquent, à moins que vous ne vouliez être mauvais ou enfreindre les règles de la RFC, utilisez \r\n
.
\ r \ n parce que RFC 2616 le dit (Section 2.2, «Règles de base»):
la source
CRLF ("\ r \ n"), car les navigateurs suivent la RFC2616 .
la source