读书笔记:《图解HTTP》第五章、第六章(上)
参与一项运动,培养一种爱好,结交一个朋友,阅读一本好书
激发活力,释放能量,大家冲冲冲
第一章:了解web及网络基础 ;第二章:简单的HTTP协议 >>
第三章:HTTP报文内的HTTP信息;第四章:返回结果的HTTP状态码 >>
第五章 与HTTP协作的web服务器
单虚拟主机多域名
通过虚拟服务器可以实现允许一台HTTP服务器搭建多个web站点。如果两域名同时部署在同一个服务器上(相同的IP地址),使用dns服务解析域名后,两者的访问IP地址会相同。因此在发送 HTTP 请求时,必须在 Host 首部内完整指定主机名或域名的 URI。
通信数据转发程序
• 代理:传话,每次经过代理服务器时,会追加写入Via首部信息。有缓存代理(响应缓存资源)和透明代理(不对报文做任何加工的代理)。
• 网关:像自己拥有资源的源服务器一样对请求进行处理。利用网关可以将HTTP请求转化为其他协议通信,可以提高安全性,和其他系统联动等。
• 隧道:安全,透明
缓存
指代理服务器或客户端本地磁盘内保存的资源副本
因为缓存有效期,需向源服务器确认资源的有效性
缓存地:缓存服务器或客户端浏览器中(即临时网络文件),如果浏览器缓存有效,可以不必向服务器请求相同的资源,而可以直接从本地磁盘读取。
第六章 HTTP首部(上)
回顾下HTTP报文结构
HTTP请求报文
HTTP响应报文
首部字段:提供报文主体大小、所使用语言,认证信息等内容。构成: 字段名:字段值(字段值对应HTTP首部字段可以有多个值)
4种HTTP首部字段类型:通用首部字段、请求首部字段、响应首部字段、实体首部字段
首部字段说明p83、p84页
End-to-end 首部和 Hop-by-hop 首部
端到端首部(End-to-end Header):分在此类别中的首部会转发给请求 / 响应对应的最终接收目标,且必须保存在由缓存生成的响应中,另外规定它必须被转发。
逐跳首部(Hop-by-hop Header):分在此类别中的首部只对单次转发有效,需提供 Connection 首部字段(即逐跳首部、连接的管理)。
HTTP/1.1 通用首部字段
1. Cache-Control 控制缓存行为
• Cache-Control : public/private 表示所有人可利用缓存/此缓存只提供给特定对象。
• Cache-Control: no-cache 如来自客户端请求则表示客户端将不会接收缓存过的响应,必须要源服务器的。如来自服务器响应,则服务器不能对资源进行缓存。
• Cache-Control: no-cache=Location 只出现在响应指令中,客户端接收带指定参数值的此响应报文,不能使用缓存。而无参数值可以。
• Cache-Control: no-store 不缓存,暗示有机密信息,注意和(2)区别
• Cache-Control: s-maxage/max-age=604800(单位 :秒) max-age表示资源保存为缓存的最长时间。请求报文中包含:不为0时,缓存服务器直接处理,为0时,交源服务器处理。响应报文中包含:缓存服务器不对资源有效性做再次确认。
• Cache-Control: min-fresh=60(单位:秒)指令要求缓存服务器返回至少还未过指定时间的缓存资源
• Cache-Control: max-stale=3600(单位:秒) 指示缓存资源,即使过期(或在过期指定时间内)也照常接收
• Cache-Control: only-if-cached 表示客户端仅在缓存服务器本地缓存目标资源的情况下才会要求其返回,若发生请求缓存服务器的本地缓存无响应,则返回状态码 504
• Cache-Control: must-revalidate 代理会向源服务器再次验证即将返回的响应缓存目前是否仍然有效。无效,则向客户端发504状态码。
• Cache-Control: proxy-revalidate 缓存服务器响应前,必须再次验证缓存的有效性。
• Cache-Control: no-transform 缓存都不允许缓存改变实体主体的媒体类型
• 扩展:通过 cache-extension 标记(token),可以扩展 Cache-Control 首部字段内的指令。
2. Connection 逐条首部、连接的管理
(1) 控制不再转发给代理的首部字段(即Hop-by-hop 首部)
如connection:upgrade 此首部字段upgrade代理接受后不再转发
(2)管理的持久连接;
Connection: close 默认连接是持久连接,指定close首部字段值时断开
3. Date 创建 HTTP 报文的日期和时间
4. Pragma: no-cache 只存在于客户端发送请求中,表示不接收缓存
5. Trailer 报文末端的首部一览
会事先说明在报文主体后记录了哪些首部字段。该首部字段可应用在 HTTP/1.1 版本分块传输编码时。(如首部字段包含Trailer:Expires 然后在报文主体后 Expires:xxx明细)
6. Transfer-Encoding 规定了传输报文主体时采用的编码方式
7. Upgrade 用于检测 HTTP 协议及其他协议是否可使用更高的版本进行通信
8. Via 追踪传输路径 各个代理服务器会往Via首部添加自身服务器的信息。
9. Warning 错误通知
请求首部字段
1. Accept 通知服务器,用户代理能够处理的媒体类型及媒体类型的相对优先级q(范围0-1,默认1.0最大,可精确到小数点后3位)
2. Accept-Charset 可用来通知服务器用户代理支持的字符集及字符集的相对优先顺序。应用于协商机制
3.Accept-Encoding 报文主体可压缩,告知支持的内容编码(可多个)及优先级顺序,如上述的gzip、deflate编码格式。
4.Accept-Language 用来告知服务器用户代理能够处理的自然语言集(指中文或英文等)以及优先级,可多个
5.Authorization 用来告知服务器,用户代理的认证信息(证书值)。
6.Expect 客户端使用首部字段 Expect 来告知服务器,期望出现的某种特定行为。
7.From 用来告知服务器使用用户代理的用户的电子邮件地址 也可用User-Agent首都字段
8.Host 请求资源所在的服务器,多个虚拟主机运行在同一个 IP 上,因此使用首部字段 Host 加以区分 Host:主机名(主机名未设置,可为空)
(下方 If-xxx 附请求条件,服务器判断条件,只有为真时,才会执行请求。)
9.If-Match 比较标记实体ETag,只有当值一致时,才会接受请求。
10.If-Modified-Since :时间 确认本地资源有效性,如果在 If-Modified-Since 字段指定的日期时间后,资源发生了更新,服务器会接受请求
11.If-None-Match 只有在 If-None-Match 的字段值与 ETag 值不一致时,可处理该请求。与 If-Match 首部字段的作用相反
12.If-Range 它告知服务器若指定的 If-Range 字段值(ETag 值或者时间)和请求资源的 ETag 值或时间相一致时,则作为范围请求处理。反之,则返回全体资源。
13.If-Unmodified-Since :时间 告知服务器,指定的请求资源只有在字段值内指定的日期时间之后,未发生更新的情况下,才能处理请求。与If-Modified-Since相反
14.Max-Forwards : 数字 最大传输逐跳数,每次转发数值减 1,当数值变 0 时返回响应
15.Proxy-Authorization 客户端告诉代理服务器认证所需要的信息,客户端与服务器之间的认证,使用首部字段 Authorization
16.Range 请求获取服务器资源的指定字节范围,服务器处理后可以206,不可以200的响应及全部资源。
17.Referer 告知服务器原始资源的URI是从哪个web页面发起的,如发给服务器,会有信息泄露的可能。
18.TE 传输编码的优先级
19.User-Agent 用于传达浏览器的种类、名称等信息。
未完待续
- 点赞
- 收藏
- 关注作者
评论(0)