-->

HTTP header line break style

2019-01-02 20:17发布

问题:

Which line break style is preferable for use in HTTP headers: \r\n or \n, and why?

回答1:

\r\n, because it's defined as the line break in the protocol specification. RFC2616 states at the beginning of Section 2.2 (Basic Rules (!)), quite unambiguously:

CR = <US-ASCII CR, carriage return (13)>
LF = <US-ASCII LF, linefeed (10)>
HTTP/1.1 defines the sequence CR LF as the end-of-line marker for all protocol elements except the entity-body

However, recognizing that people will break the standard for whatever purposes, there is a "tolerance provision" in Section 19.3 (note that it re-iterates the correct sequence):

The line terminator for message-header fields is the sequence CRLF. However, we recommend that applications, when parsing such headers, recognize a single LF as a line terminator and ignore the leading CR.

Therefore, unless you want to be Evil or otherwise break the RFC's rules, use \r\n.



回答2:

\r\n because RFC 2616 says so (Section 2.2, "Basic Rules"):

HTTP/1.1 defines the sequence CR LF as the end-of-line marker for all
protocol elements except the entity-body (see appendix 19.3 for
tolerant applications). The end-of-line marker within an entity-body is defined by its associated media type, as described in section 3.7.

   CRLF           = CR LF


回答3:

CRLF ("\r\n"), because browsers follow RFC2616.



标签: