图解HTTP-阅读笔记 第3章 HTTP报文内的HTTP信息

一、HTTP报文

用于HTTP协议交互的信息被称为HTTP报文。请求端(客户端)的HTTP报文叫作请求报文,响应端(服务端)的叫作响应报文。

二、请求报文及响应报文的结构

数据组成:

  • 请求行:包含用于请求的方法,请求URI和HTTP版本
  • 状态行:包含代表响应结果的状态码,缘由短语和HTTP版本
  • 首部字段:包含表示请求和响应的各类条件和属性的各种首部(通常有4种首部,分别是:通用首部、请求首部、响应首部和实体首部)
  • 其余:可能包含HTTP的RFC里未定义的首部(Cookie等)

请求报文

请求行-->请求首部字段-->通用首部字段-->实体首部字段-->其余
复制代码

响应报文

状态行-->响应首部字段-->通用首部字段-->实体首部字段-->其余
复制代码

三、编码提高传输速率

  • 报文(message):是HTTP通讯中的基本单位,由8位组字节流(octet sequence,其中octet为8个比特)组成,经过HTTP通讯传输
  • 实体(entity):做为请求或响应的有效载荷数据(补充项)被传输,其内容由实体首部和实体主体组成
  • 压缩传输的内容编码:gzip(GNU zip)、compress(UNIX 系统的标准压缩)、deflate(zlib)、identity(不进行编码)
  • 分割发送的分块传输编码

四、发送多种数据的多部分对象集合

HTTP协议中采用了多部分对象集合,发送的一份报文主体内可含有多类型实体。一般是在图片或文本文件等上传时使用

  • multipart/form-data:在Web表单上传时使用
  • multipart/byteranges:状态码206(Partial Content ,部份内容)响应报文包含了多个范围的内容时使用

五、获取部份内容的范围请求

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

  • 5001~10000字节
Range: bytes=5001-10000
复制代码
  • 从5001字节以后的所有
Range: bytes=5001-
复制代码
  • 从一开始到3000字节和5000~7000字节的多重范围
Range: bytes=0-3000, 5000-7000
复制代码

六、内容协商返回最合适的内容

内容协商会以语言、字符集、编码方式等为基准判断响应的资源。包含在请求报文中的某些首部字段就是判断的基准:

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

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

  • 服务器驱动协商(由服务器进行内容协商,以请求的首部字段为参考,在服务器端自动处理)
  • 客户端驱动协商(由客户端进行内容协商,用户从浏览器显示的可选项列表中手动选择)
  • 透明协商(是服务器驱动和客户端驱动的结合体,是由服务器端和客户端各自进行内容协商的一种方法)
相关文章
相关标签/搜索