第三章 -- HTTP报文内的HTTP信息
请求和响应的运作
报文
定义:用于HTTP协议交互的信息,称为HTTP报文。请求端(客户端)的HTTP报文叫请求报文,响应端(服务器)端的叫做响应报文。
分块:分为报文首部和报文主体两个板块,两者最初出现的空行(CR+LF)来划分。通常,报文并不一定要有报文主体。
请求报文和响应报文的结构
请求报文:
响应报文:
编码提升传输效率
报文主体和实体主体的差别
报文(message):HTTP通信中的基本单位,由8位字节流组成,通过HTTP传输。
实体(entity):作为请求或响应的有效荷载数据(补充项)被传输,内容由实体首部和实体主体构成。
通常报文主体就是实体主体,只有当传输中进行编码操作时(CONNECT?),实体主体的内容发生变化,才导致它和报文主体产生差异。
压缩传输的内容编码
向待发送邮件内增加附件时候,为了使邮件变小,我们会先压缩文件再添加附件发送。而HTTP协议中有种被称为内容编码的功能也能进行类似的操作。
内容编码:应用在实体内容上的编码格式,保持尸体信息原样压缩,内容编码后的实体由客户端接收并负责编码。
编码内容:gzip(GUN zip) compress(unix) deflate(zlib) identity(不进行编码)
分割发送的分块传输编码(chuned transfer coding)
在HTTP通信过程中,请求的编码实体资源未全部传输完成前,浏览器无法显示请求页面,则在传输大容量 数据时候,通过数据分割成多个块,可以让浏览器逐步显示。
发送多数据的对部分对象合集
MIME(multipurpose internet main extensions:多用途因特网邮件扩展)
允许邮件处理文本,视频,图片等多喝不同类型的数据,MIME扩展中会使用一种称为多部分对象合集(multipart)的方法来容纳不同类型的数据。
多部分集合包含对象如下:
multipart/form-data 在web表单文件上传时使用
multipart/byteranges 状态码206(partical content 部分内容)响应报文包含了多个范围的内容时使用
表 6-1:通用首部字段
表 6-2:请求首部字段
首部字段名 说明
Accept 用户代理可处理的媒体类型
Accept-Charset 优先的字符集
Accept-Encoding 优先的内容编码
Accept-Language 优先的语言(自然语言)
Authorization Web认证信息
Expect 期待服务器的特定行为
From 用户的电子邮箱地址
Host 请求资源所在服务器
If-Match 比较实体标记(ETag)
If-Modified-Since 比较资源的更新时间
If-None-Match 比较实体标记(与 If-Match 相反)
If-Range 资源未更新时发送实体 Byte 的范围请求
If-Unmodified-Since 比较资源的更新时间(与If-Modified-Since相反)
Max-Forwards 最大传输逐跳数
Proxy-Authorization 代理服务器要求客户端的认证信息
Range 实体的字节范围请求
Referer 对请求中 URI 的原始获取方
TE 传输编码的优先级
User-Agent HTTP 客户端程序的信息
表 6-3:响应首部字段
首部字段名 说明
Accept-Ranges 是否接受字节范围请求
Age 推算资源创建经过时间
ETag 资源的匹配信息
Location 令客户端重定向至指定URI
Proxy-Authenticate 代理服务器对客户端的认证信息
Retry-After 对再次发起请求的时机要求
Server HTTP 服务器的安装信息
Vary 代理服务器缓存的管理信息
WWW-Authenticate 服务器对客户端的认证信息
表 6-4:实体首部字段
首部字段名 说明
Allow 资源可支持的HTTP方法
Content-Encoding 实体主体适用的编码方式
Content-Language 实体主体的自然语言
Content-Length 实体主体的大小(单位:字节)
Content-Location 替代对应资源的URI
Content-MD5 实体主体的报文摘要
Content-Range 实体主体的位置范围
Content-Type 实体主体的媒体类型
Expires 实体主体过期的日期时间
Last-Modified 资源的最后修改日期时间