HTTP 报文结构

HTTP 请求报文和响应报文的组成部分及格式规范

问题

HTTP 报文由哪些部分组成,请求报文和响应报文有什么区别?

解答

HTTP 报文采用 header + body 的结构,完整组成为:起始行 + 头部 + 空行 + 实体

起始行

请求报文的起始行(请求行):

GET /home HTTP/1.1

格式:方法 + 路径 + HTTP版本

响应报文的起始行(状态行):

HTTP/1.1 200 OK

格式:HTTP版本 + 状态码 + 原因短语

注意:起始行中每两个部分之间用空格隔开,最后一个部分后面接换行符,严格遵循 ABNF 语法规范。

头部

头部字段格式规范:

  • 字段名不区分大小写
  • 字段名不允许出现空格,不可以出现下划线 _
  • 字段名后面必须紧接着冒号 :

示例:

Content-Type: application/json
Content-Length: 1024

空行

空行用来区分头部和实体,非常重要。如果在头部中间加入空行,空行后的内容会被视为实体部分。

实体

实体是具体的数据内容,即 body 部分。请求报文对应请求体,响应报文对应响应体。

关键点

  • HTTP 报文结构:起始行 + 头部 + 空行 + 实体
  • 请求行格式:方法 + 路径 + HTTP版本
  • 状态行格式:HTTP版本 + 状态码 + 原因短语
  • 头部字段名后必须紧跟冒号,不允许空格和下划线
  • 空行是头部和实体的分隔符,不可省略