《图解HTTP》(二)之HTTP报文及状态码

3. HTTP报文

3.1. HTTP报文

用于HTTP协议交互的信息被称为HTTP报文,客户端的HTTP报文叫做请求报文,服务端的叫做响应报文。报文大致分为报文首部和报文主体,但并不一定要有报文主体。


3.2. 报文结构



字段
说明
请求行 请求方法,请求URI和HTTP版本
状态行 响应结果的状态码,原因短语和HTTP版本
首部字段 请求和响应的各种条件和属性的各类首部:通用首部、请求首部、响应首部、实体首部
其他 HTTP的RFC里未定义的首部(Cookie等)

3.3. 编码提升传输速率

HTTP在传输数据时可以按照数据原貌直接传输也可以在传输过程中编码提升传输速率;通过编码可以处理大量请求但会消耗更多的CPU等资源。

3.3.1. 报文主体和实体主体的差异

  • 报文:是HTTP通信中的基本单位,由8位组字节流组成,通过HTTP通信传输。
  • 实体:作为请求或响应的有效载荷数据被传输,其内容由实体首部和实体主体组成。

通常报文主体等于实体主体,但当传输中进行编码时,实体主体的内容发生变化才会与报文主体产生差异。

3.3.2. 压缩传输的内容编码

HTTP中的内容编码指明应用在实体内容上的编码格式,并保持实体信息原样压缩,内容编码后的实体由客户端接收并负责解码。


常用的内容编码:

  • gzip(GNU ZIP)
  • compress(UNIX系统的标准压缩)
  • deflate(zlib)
  • identity(不进行编码)

3.3.3. 分块传输编码

分块传输编码会将实体主体分成多个块,每一块都会用十六进制来标记快的大小,而实体的最后一块会使用“0(CR+LF)”来标记。

由接收的客户端负责解码,回复到编码前的实体主体。


3.4. 发送多种数据的多部分对象集合

HTTP中的多部分对象集合即发送一份报文主体内可含有多类型实体,通常是图片或文本文件上传等。

多部分对象集合包含的对象:

  • multipart/form-data:在web表单文件上传时使用
  • multipart/byteranges:状态码206响应报文包含了多个范围的内容时使用

3.5. 获取部分内容的范围请求

指定范围发送的请求叫做范围请求,对于一份10000字节大小的资源,如果使用范围请求,可以只请求5001-10000字节内的资源。


执行范围请求时,会用到首部字段Range来指定资源的byte范围


3.6. 内容协商返回最合适的内容

内容协商机制是指客户端和服务端就响应的资源内容进行交涉,然后提供给客户端最合适的资源。内容协商会以响应资源的语言、编码方式等作为判断的基准。

内容协商类型:

  • 服务器驱动协商
  • 客户端驱动协商
  • 透明协商

4. HTTP状态码

状态码即服务器返回的请求结果。

状态码
类型
说明
1xx Informational(信息性状态码) 接收的请求正在处理
2xx Success(成功) 请求正常处理完毕
3xx Redirection(重定向) 需要进行附加操作以完成请求
4xx Client Error(客户端错误) 服务器无法处理请求
5xx Server Error(服务端错误) 服务器处理请求出错


4.1. 2XX成功

4.1.1. 200 OK


4.1.2. 204 No Content


表示请求已成功处理,但在返回的响应报文中不含实体的主体部分。

4.1.3. 206 Partial Content


该状态码表示客户端进行了范围请求,服务器成功执行了这部分的GET请求。响应报文中包含由Content-Range指定范围的实体内容。

4.2. 3XX 重定向

4.2.1. 301 Moved Permanently

永久性重定向,表示资源已被分配了新的URI,以后应使用新的URI。


4.2.2. 302 Found

临时性重定向,表示请求的资源已被分配了新的URI,但是临时性的。


4.2.3. 303 See Other

表示由于请求的资源存在另一个URI,应使用GET方法重定向获取请求的资源。


4.2.4. 304 Not Modified

表示客户端发送附带条件的请求时(GET中的If-Modified-Since等首部),服务器允许访问资源,但未满足附带条件因此直接返回304(服务器的资源未改变,可直接使用客户端未过期的缓存),不包含任何响应的主体部分。


4.2.5. 307 Temporary Redirect

临时重定向,该状态与302有相同的含义。

4.3. 4XX 客户端错误

4.3.1. 400 Bad Request

表示请求报文中存在语法错误,需修改内容重新发送请求。


4.3.2. 401 Unauthorized

表示需要通过HTTP认证。


4.3.3. 403 Forbidden

表示请求被服务器拒绝,未获得访问授权。


4.3.4. 404 No Found

表明服务器上找不到请求的资源,也可以在服务器拒绝请求且不想说明理由时使用。


4.4. 5XX 服务器错误

4.4.1. 500 Internal Server Error

表明服务器在执行请求时发生了错误,也可能是Web应用存在bug或临时故障等。


4.4.2. 503 Service Unavailable

表明服务器暂时处于超负荷或正在进行停机维护,现在不能处理请求。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值