HTTP报文小结
一直感觉自己HTTP这一块挺薄弱的,很多概念掌握的不精。本文是本人对HTTP报文的一些整理与小结。
HTTP报文即用于HTTP协议交互的信息,可以分为请求报文和响应报文。它本身其实就是多行(CRLF作为换行符)数据组成的一个文本。
HTTP报文结构
它大致可以分为首部和主体两部分,两者由空行来分隔。报文主体并不是必须的。
| 报文首部 |
| 空行 |
| 报文主体 |
对于报文的首部,其结构如下所示
| 请求行/状态行 |
| 首部字段 |
| 首部字段 |
| 首部字段 |
| 其它 |
首部内容由以下这些内容组成
- 请求行 包含用于请求的方法、URI和HTTP版本
- 状态行 包含响应结果的状态吗,原因和HTTP版本
- 首部字段 包含请求和响应的各种条件和属性各类首部(包括通用首部、请求首部、相应首部和实体首部)
- 其它 包含RFC未定义的首部(如Cookie)
HTTP报文的内容编码
为了提升传输效率,HTTP可以对内容进行编码传输,常见的内容编码包括以下几种
- gzip(GNU zip)
- compress (UNIX系统标准亚索)
- deflate(zlib)
- identity(不进行编码)
HTTP状态码
| 类别 | 原因 | |
| 1XX | Informational(信息性状态码) | 请求正在处理 |
| 2XX | Success(成功状态码) | 请求正常处理完毕 |
| 3XX | Redirection(重定向状态码) | 要进行附加操作以完成请求 |
| 4XX | Client Error(客户端错误状态码) | 服务器无法处理请求 |
| 5XX | Server Error(服务器错误状态码) | 服务器处理请求出错 |