哪种换行符样式最适合在HTTP标头中使用:\r\n
或\n
,为什么?
\r\n
,因为它被定义为协议规范中的换行符。 RFC2616 states at the beginning of Section 2.2 (Basic Rules (!)), quite unambiguously:
CR = <US-ASCII CR,回车(13)> LF = <US-ASCII LF,换行(10)> HTTP / 1.1将序列CR LF定义为除entity-body之外的所有协议元素的行尾标记
然而,认识到人们会为了任何目的打破标准,在Section 19.3中有一个“容忍条款”(注意它重新迭代正确的顺序):
消息头字段的行终止符是序列CRLF。但是,我们建议应用程序在解析此类头时,将单个LF识别为行终止符并忽略前导CR。
因此,除非您想成为Evil或以其他方式违反RFC的规则,否则请使用\r\n
。
\ r \ n因为RFC 2616这样说(第2.2节“基本规则”):
HTTP / 1.1将序列CR LF定义为所有的行尾标记 除实体主体外的协议要素(见附录19.3) 宽容的申请)。实体主体中的行尾标记由其关联的媒体类型定义,如3.7节所述。
CRLF = CR LF
CRLF(“\ r \ n”),因为浏览器遵循RFC2616。