我不知道在发送正文的所有字节后是否应该发送下一条消息,而无需使用 CRLF 将第一条消息的正文与第二条消息的起始行分开。
这是根据 RFC 7230 的语法:
HTTP-message = start-line
*( header-field CRLF )
CRLF
[ message-body ]
根据语法,主体末尾没有 CRLF,但这看起来很奇怪,因为其他所有内容似乎都由 CRLF 分隔,特别是分块主体的语法。
chunk = chunk-size [ chunk-ext ] CRLF
chunk-data CRLF
这就是没有 CRLF 的情况:
HTTP/1.1 200 OK
Content-Type: text/plain
Content-Length: 3
abcHTTP/1.1 200 OK
Content-Type: text/plain
Content-Length: 3
这就是它的样子:
HTTP/1.1 200 OK
Content-Type: text/plain
Content-Length: 3
abc
HTTP/1.1 200 OK
Content-Type: text/plain
Content-Length: 3
abc
那么,CRLF 应该跟随正文吗?
那么您必须将其包含在消息正文中:
HTTP/1.1 用户代理不得作为前言 或者跟随一个额外的 CRLF 请求。如果终止请求 需要带有行结束符的消息正文,那么用户代理必须 将终止 CRLF 八位字节计算为消息正文长度的一部分。
不,当存在内容长度并且未使用分块传输编码时,正文的长度正是由内容长度定义的。