HTTP 标题换行样式

哪种换行符样式更适合在 HTTP 头中使用: \r\n\n,为什么?

107342 次浏览

因为它被定义为协议规范中的换行符:

CR = < US-ASCII CR,回车(13) >
LF = < US-ASCII LF,linefeed (10) >
HTTP/1.1将序列 CR LF 定义为除实体主体之外的所有协议元素的行尾标记

RFC2616在技术上被 RFC7230所淘汰,但它没有做出重大改变,并再次在 第三部分中调用 CRLF 作为分隔符,而 RFC 引用 RFC5234,附录 B.1将“ CRLF”定义为 %x0D %x0A

然而,认识到人们会为了任何目的打破标准,在 第19.3条中有一个“容忍条款”(注意它重复了 正确序列) :

消息头字段的行结束符是序列 CRLF。但是,我们建议应用程序在解析这样的报头时,将单个 LF 识别为行结束符,而忽略前导 CR。

最新款的 RFC72303.5

虽然起始行和头字段的行终止符是序列 CRLF,但是收件人可以将单个 LF 识别为行终止符,并忽略之前的任何 CR。

因此,除非你想成为邪恶的或以其他方式打破 RFC 的规则,使用 \r\n

CRLF (“ r n”) ,因为浏览器遵循 RFC2616

因为 RFC2616是这么说的(第2.2节,“基本规则”) :

HTTP/1.1定义了 CR LF 序列 作为所有行的结束标记
协议元素,除了 实体(见附录19.3)
容忍申请) 内的行结束标记 实体-主体由其 关联媒体类型,如 第3.7条。

   CRLF           = CR LF