layout | title | |
---|---|---|
default |
|
用于HTTP协议交互的信息称为HTTP报文。请求端的叫做请求报文。响应端的叫做响应报文。HTTP报文本身是由多行数据构成的字符串文本。
大致可以分为报文首部和报文主体两块,由最初的空行来划分。通常不一定有报文主体。
请求报文:
- 请求行:包含用于请求的方法,请求URI和HTTP版本
- 请求首部字段
- 通用首部字段
- 实体首部字段
- 其他(可能包含HTTP的RFC里的未定义首部,比如cookie)
- 空行
- 报文主体
响应报文:
- 状态行:包含表明响应结果的状态码,原因短语和HTTP版本
- 响应首部字段
- 通用首部字段
- 实体首部字段
- 其他
- 空行
- 报文主体
注:cookie并不是在HTTP的RFC里的,他是IETF的另一个规范HTTP状态规范里的。不过也没必要深究,都是规范就是了。
就是讲内容进行压缩后再传给客户端,用户端再进行解码,内容编码有以下几种:Gzip,compress,deflate,identity
就是将实体主体分为多个部分,每一块都用16进制来标记大小。
比如邮件采用了MIME,于是我们可以添加文本,图片,视频等多种不同类型的数据。
HTTP协议里面也采纳了多部分对象集合。
- multipart/form-data:web表单文件上传时使用
- multipart/byteranges:报文包含多个范围的内容时使用,每个部分都可以有自己的头部
下载过程中如果出现了中断,就需要恢复的机制,就是从之前中断处恢复下载。
就是指定范围发送的请求。
Range: bytes=-3000,5000-10000
还可以发送多个范围的请求
范围请求如果支持的话,会返回206的结果好报文,如果是多范围的话,那就是multipart/byteranges的结果。如果不支持的话,那就是状态码200和完整的实体内容。
这个功能得是后端支持的,目前在前端界还没有使用过,因为前端也没有下载大量数据的需求
服务器来根据内容返回,或者客户端自动根据UA来跳转,或者服务器和客户端各自进行内容协商的方法。