HTTP标头和邮件正文分隔符说明

时间:2015-03-18 20:09:51

标签: http http-headers

我将解析与HTTP标头/消息具有相同格式的元数据。

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

每个HTTP标头是否由CRLF(\ r \ n)分隔,然后是标头和邮件正文CRLFCRLF(\ r \ n \ n \ n \ n)之间的分隔符?我找不到(或者我错过了)任何详细说明标准的东西。

感谢。

2 个答案:

答案 0 :(得分:10)

RFC 2616(你不应再看了,7230是它的后继者):

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

所以:

  1. 起始行,可以是Request-LineStatus-Line,两者都以CRLF结尾。
  2. 零个或多个消息头,每个消息头以CRLF结尾。
  3. CRLF表示起始行和标题的结尾。
  4. (可选)邮件正文。
  5. 话虽如此,您不想自己解析HTTP。使用库。

    实施例 enter image description here (图片source

答案 1 :(得分:0)

消息开头有一个请求/状态行。
除此之外:
根据RFC2616,您绝对正确,
但是,尽管RFC2616将标头的格式指定为*(message-header CRLF)
RFC7230将其指定为*(标头字段CRLF)
除了名称更改外,似乎没有什么不同,标题的格式相同。

tldr;是的。

p.s。解析一个HTTP消息的标题并不难,花了我几个小时,解析该消息的主体是有点困难,但是说实话,您应该尝试这样做,这是一个很好的挑战。