1. HTTP 报文
一般 HTTP 报文分为「头部 header」和「主体 body」两部分,但是并不一定要有「主体」部分。
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)有服务器和客户端共同决定
网友评论