Réponses:
\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»):
HTTP / 1.1 définit la séquence CR LF comme le marqueur de fin de ligne pour tous
les éléments de protocole à l'exception du corps d'entité (voir l'appendice 19.3 pour
les applications tolérantes). Le marqueur de fin de ligne dans un corps d'entité est défini par son type de média associé, comme décrit dans la section 3.7.CRLF = CR LF
CRLF ("\ r \ n"), car les navigateurs suivent la RFC2616 .