《图解 HTTP》 梳理(一)
第一章 了解 Web 及网络基础
略
第二章 简单的 HTTP 协议
- HTTP/1.1 所有连接默认为持久连接,但 HTTP/1.0 未标准化
- 管线化技术出现后,不需要等待响应即可直接发送下一个请求
- Cookie 技术通过在请求和响应报文中写入 Cookie 信息来控制客户端的状态。服务器发送的响应报文中含有 Set-Cookie 的首部字段时,客户端保存 Cookie。此后客户端在请求报文中会自动加上 Cookie 值
第三章 HTTP 报文内的 HTTP 信息
编码提升传输速率,常用的内容编码有以下几种:gzip(GNU zip)、compress(UNIX 系统的标准压缩)、deflate(zlib)、identify(不进行编码)
分割发送的分块传输编码(Chunked Transfer Coding),其将实体主体分成多个部分,每一部分均通过十六进制来标记块的大小,最后一块使用『0(CR+LF)』来标记。
MIME(多用途因特网邮件扩展)机制,允许邮件处理文本、图片、视频等多个不同类型的数据。MIME 扩展中使用一种称为多部分对象集合(Multipart)的方法,用来容纳多份不同类型的数据。
mulitpart 包含的对象如下:
- multipart/form-data:在 Web 表单文件上传时使用
Content-Type: multipart/form-data; boundary=AaB03x --AaB03x Content-Disposition: form-data; name="field1" Joe Blow --AaB03x Content-Disposition: form-data; name="pics"; filename="file1.txt" Content-Type: text/plain ...(file1.txt的数据)... --AaB03x--
- multipart/byteranges:状态码 206(Partial Content,部分内容)响应报文包含了多个范围的内容时使用
HTTP/1.1 206 Partial Content Date: Fri, 13 Jul 2012 02:45:26v GMT Last-Modified: Fri, 31 Aug 2007 02:02:20 GMT Content-Type: multipart/byteranges; boundary=THIS_STRING_SEPARATES --THIS_STRING_SEPARATES Content-Type: application/pdf Content-Range: bytes 500-999/8000 ...(范围指定的数据)... --THIS_STRING_SEPARATES Content-Type: application/pdf Content-Range: bytes 7000-7999/8000 ...(范围指定的数据)... --THIS_STRING_SEPARATES--
说明:
- 使用 boundary 字符串来划分 multipart 指明的各类实体,在其指定的各个实体的起始行之前插入『—』标记(如 --AaB03x),在对应的字符串的最后插入『--』标记作为结束(如 --AaB03x—)。
范围请求(Range Request):指定范围发送的请求。执行范围请求时,用到首部字段 Range 来指定资源的 byte 范围:
- 5001~10000 字节
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。
内容协商(Content Negotiation):客户端和服务器端就响应的资源内容进行交涉,然后提供给客户端最合适的资源。内容协商会以响应资源的语言、字符集、编码方式等作为判断的基准,包含在请求报文中的某些首部字段用于标识这些判断标准:
- Accept
- Accept-Charset
- Accept-Encoding
- Accept-Language
- Content-Language
内容协商技术的 3 种类型:
- 服务器驱动协商
- 客户端驱动协商
- 透明协商
相关推荐
chensen 2020-11-14
lwnylslwnyls 2020-11-06
ATenhong 2020-10-15
yanzhelee 2020-10-13
佛系程序员J 2020-10-10
guojin0 2020-10-08
佛系程序员J 2020-10-08
bluewelkin 2020-09-16
wwzaqw 2020-09-04
zhongdaowendao 2020-09-02
favouriter 2020-08-18
奎因amp华洛 2020-08-15
一青年 2020-08-13
千锋 2020-08-10
nangongyanya 2020-08-09
dongxurr 2020-08-08
明天你好 2020-08-03
kyelu 2020-08-03
Ashes 2020-08-03