《图解 HTTP》笔记(三)HTTP 报文

1. HTTP 报文

一般 HTTP 报文分为「头部 header」和「主体 body」两部分,但是并不一定要有「主体」部分。

《图解 HTTP》笔记(三)HTTP 报文_第1张图片
HTTP 报文

请求行
包含请求的方法「GET」、请求路径「 http://zheteng123.cn/ 」、HTTP 版本「HTTP/1.1」。

状态行
包含 HTTP 版本「HTTP/1.1」、 表明响应结果的状态码「200」、对应状态码的说明「OK」。

空行
在报文中,为了能区分出头部和主体,在两者之间有一个空行将它们隔开。

2. 编码提升传输效率

常用的编码方式有:

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

3. 发送多种数据

MIME(Multipurpose Internet Mail Extensions,多用途因特网邮件扩展)机制,它允许邮件处理文本、图片、视频等多个不同类型的数据。

多部分对象集合包含的对象如下。
multipart/form-data
在 Web 表单文件上传时使用。
multipart/byteranges
状态码 206(Partial Content,部分内容)响应报文包含了多个范围的内容时使用。

4. 获取部分内容的范围请求(断点续传)

  • 5001~10 000 字节
    Range: bytes=5001-10000
  • 从 5001 字节之后全部的
    Range: bytes=5001-
  • 从一开始到 3000 字节和 5000~7000 字节的多重范围
    Range: bytes=-3000, 5000-7000

响应会返回状态码为 206 Partial Content 的响应报文。另外,对于多重范围的范围请求,响应会在首部字段 Content-Type 标明 multipart/byteranges 后返回响应报文。
如果服务器端无法响应范围请求,则会返回状态码 200 OK 和完整的实体内容。

5. 内容协商

内容协商会以响应资源的语言、字符集、编码方式等作为判断的基准。
请求头中可以包含以下字段来作为服务器判断标准:

  • Accept
  • Accept-Charset
  • Accept-Encoding
  • Accept-Language
  • Content-Language

内容协商技术有以下 3 种类型:

  • 服务器驱动协商(Server-driven Negotiation)由服务器根据请求头判断
  • 客户端驱动协商(Agent-driven Negotiation)由客户端手动选择
  • 透明协商(Transparent Negotiation)有服务器和客户端共同决定

你可能感兴趣的:(《图解 HTTP》笔记(三)HTTP 报文)