🍂落页
登 录

《图解 HTTP》笔记

  • 了解 Web 及网络基础
  • 简单的 HTTP 协议
  • HTTP 报文信息
  • HTTP 状态码
🍂落页
TALAXY
HTTP 报文信息
🍂落页
TALAXY

HTTP 报文信息

HTTP 报文信息
  • 报文组成
  • 编码
  • 发送多种数据类型
  • 对内容的范围请求
  • 内容协商

报文组成

HTTP 报文组成大致如下:

  • 报文首部 - 请求或响应的内容及属性
  • 空行(CR+LF)- 回车符和换行符组成的空行;
  • 报文主体 - 应被发送的数据

报文首部通常包括:

  • 请求行/状态行
    • 请求行信息包括:请求方法、URI、HTTP 版本
    • 状态行信息包括:HTTP 版本、状态码、原因短语
  • 首部字段
    • 包括:通用首部、请求首部、响应首部、实体首部
  • 其他未在 RFC 定义的首部。

编码

可以通过编码提升传输速率,响应的也会增加 CPU 资源的消耗。

通常,报文主体等于实体主体,只有当传输中进行编码操作时,实体主体的内容发生变化。

HTTP 协议中可以通过 内容编码 来对实体进行编码,通常以 gzip 进行编码。

而在大容量数据需要进行内容分割时,会采用 分块传输编码(Chunked Transfer Coding) 。它会将实体主体分成多个部分,每一块都用十六进制来标记块的大小。最后一块会使用 "0(CR+LF)" 进行标记。

HTTP/1.1 中的 传输编码(Transfer Coding) 可以在通信时按某种编码方式传输,但只定义作用于分块传输编码中。

发送多种数据类型

MIME - Multipurpose Internet Mail Extensions 多用途因特网邮件扩展。

MIME 会使用 多部分对象集合(Multipart) 来容纳多份不同类型的数据。

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

对内容的范围请求

如果在下载网络资源时出现中断,可以通过 范围请求 从中断处恢复下载。

Range: bytes=5001-10000         // 5001 至 10000 的内容
Range: bytes=5001-              // 5001 及往后的内容
Range: bytes=0-3000, 5000-7000  // 多个范围内容

内容协商

内容协商机制是指客户端和服务端就响应的资源内容进行交涉,然后提供给客户端最为合适的资源。

  • Accept
  • Accept-Charset - 字符集
  • Accept-Encoding - 编码
  • Accept-Language - 语言
  • Content-Language

协商方式:

  • 服务端驱动协商 - 由服务端根据请求首部字段来进行内容协商。
  • 客户端驱动协商 - 根据用户的选择、浏览器选项、操作系统类型等进行内容协商。
  • 透明协商 - 服务端和客户端均进行各自的内容协商工作(用代理服务器进行缓存协助)。

TALAXY 落于 2024年3月17日 。