Stile di interruzione di riga di intestazione HTTP

Quale stile di interruzione di riga è preferibile per l’uso nelle intestazioni HTTP: \r\n o \n e perché?

\r\n , perché è definito come l’interruzione di riga nella specifica del protocollo. RFC2616 afferma all’inizio della Sezione 2.2 (Regole di base (!)), In modo univoco :

CR =
LF =
HTTP / 1.1 definisce la sequenza CR LF come marker di fine riga per tutti gli elementi del protocollo eccetto il corpo dell’ quadro

Tuttavia, riconoscendo che le persone infrangeranno lo standard per qualsiasi scopo, c’è una “disposizione di tolleranza” nella Sezione 19.3 (si noti che essa reiterera la sequenza corretta ):

Il terminatore di riga per i campi di intestazione dei messaggi è la sequenza CRLF. Tuttavia, si consiglia che le applicazioni, durante l’analisi di tali intestazioni, riconoscano un singolo LF come terminatore di riga e ignorino il CR iniziale.

Pertanto, a meno che tu non voglia essere il Male o altrimenti infrangere le regole della RFC, usa \r\n .

\ r \ n perché dice RFC 2616 (Sezione 2.2, “Regole di base”):

HTTP / 1.1 definisce la sequenza CR LF come marcatore di fine riga per tutti
elementi del protocollo tranne il corpo dell’entity framework (vedi appendice 19.3 per
applicazioni tolleranti). Il marcatore di fine riga all’interno di un corpo di entity framework è definito dal tipo di supporto associato, come descritto nella sezione 3.7.

  CRLF = CR LF 

CRLF (“\ r \ n”), perché i browser seguono RFC2616 .