Risposte:
\r\n
, poiché è definito come un'interruzione di riga nelle specifiche del protocollo. RFC2616 afferma all'inizio della sezione 2.2, "Regole di base" , in modo abbastanza inequivocabile:
CR = <US-ASCII CR, ritorno a
capo (13)> LF = <US-ASCII LF, linefeed (10)>
HTTP / 1.1 definisce la sequenza CR LF come marker di fine riga per tutti gli elementi del protocollo tranne l'entità -corpo
RFC2616 era tecnicamente obsoleto da RFC7230, ma non fa cambiamenti drastici e chiama nuovamente CRLF come delimitatore nella sezione 3 , e che RFC fa riferimento a RFC5234, Appendice B.1 per definire "CRLF" come %x0D %x0A
.
Tuttavia, riconoscendo che le persone infrangeranno lo standard per qualunque scopo, c'è una "disposizione di tolleranza" nella sezione 19.3 (si noti che reinserisce la sequenza corretta ):
Il terminatore di riga per i campi di intestazione del messaggio è la sequenza CRLF. Tuttavia, si consiglia che le applicazioni, durante l'analisi di tali intestazioni, riconoscano un singolo LF come terminatore di linea e ignorino il CR iniziale.
Nella più recente RFC7230, § 3.5
Sebbene il terminatore di riga per i campi della riga iniziale e dell'intestazione sia la sequenza CRLF, un destinatario PUO 'riconoscere un singolo LF come terminatore di riga e ignorare qualsiasi CR precedente.
Pertanto, a meno che tu non voglia essere il Male o altrimenti infrangere le regole della RFC, usa \r\n
.
\ r \ n perché lo dice RFC 2616 (Sezione 2.2, "Regole di base"):
HTTP / 1.1 definisce la sequenza CR LF come marker di fine riga per tutti gli
elementi del protocollo tranne l'entità-corpo (consultare l'appendice 19.3 per
applicazioni tolleranti). Il marker di fine riga all'interno di un corpo-entità è definito dal tipo di supporto associato, come descritto nella sezione 3.7.CRLF = CR LF
CRLF ("\ r \ n"), perché i browser seguono RFC2616 .