HTTP header 和消息 body 分隔符说明

HTTP header and message body separator clarification

我将解析与 HTTP headers/messages 具有相同格式的元数据。

我正在阅读 RFC 2616,我正试图更清楚地理解这一点。

每个HTTPheader都是用CRLF(\r\n)分隔然后header和消息body之间的分隔符CRLFCRLF(\r\n \r\n)?我找不到(或者我错过了)任何详细说明标准的内容。

谢谢。

RFC 2616 (which you shouldn't look at anymore, 7230 是它的继任者)指出:

generic-message = start-line
                  *(message-header CRLF)
                  CRLF
                  [ message-body ]

所以有:

  1. start-line,它是 Request-LineStatus-Line,两者都以 CRLF 结尾。
  2. 零个或多个 message-headers,每个都以 CRLF 结尾。
  3. 一个 CRLF 来表示 start-line 和 headers 的结尾。
  4. 可选的消息 body。

也就是说,您不想自己解析 HTTP。为此使用图书馆。

例子 (图片source)

消息的开头有 request/status 行。
除此之外:
根据 RFC2616,你完全正确,
然而,虽然 RFC2616 将 headers' 格式指定为 *(message-header CRLF)
RFC7230 将其指定为 *( header-field CRLF )
除了名称改变,似乎没有什么不同,headers的格式是一样的。

tldr;是的。

p.s。解析 http 消息的 headers 并不难,我花了几个小时,解析消息 body 有点困难,但老实说,你应该尝试去做,这是一个很好的挑战。