一、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范围
Range: bytes=5001-10000
复制代码
Range: bytes=5001-
复制代码
- 从一开始到3000字节和5000~7000字节的多重范围
Range: bytes=0-3000, 5000-7000
复制代码
六、内容协商返回最合适的内容
内容协商会以语言、字符集、编码方式等为基准判断响应的资源。包含在请求报文中的某些首部字段就是判断的基准:
- Accept
- Accept-Charset
- Accept-Encoding
- Accept-Language
- Content-Language
内容协商技术有如下3种类型:
- 服务器驱动协商(由服务器进行内容协商,以请求的首部字段为参考,在服务器端自动处理)
- 客户端驱动协商(由客户端进行内容协商,用户从浏览器显示的可选项列表中手动选择)
- 透明协商(是服务器驱动和客户端驱动的结合体,是由服务器端和客户端各自进行内容协商的一种方法)