第一次做读书笔记,不太熟练请见谅,笔记在有道云文章末尾分享链接,有需要的自行保存谢谢🙏
图解HTTP是个通俗易懂的书很适合初学者,有需要的话建议去买一本看,或者看电子档也行。
第六章 HTTP首部
1.HTTP报文首部
HTTP 协议的请求和响应报文中必定包含 HTTP 首部。
首部内容为客户端和服务器分别处理请求和响应提供所需要的信息。
HTTP请求报文:
由方法、URI、HTTP版本、HTTP首部字段等部分构成。
HTTP响应报文:
由HTTP版本、状态码(数字和原因短语)、HTTP首部字段3部分组成。
2.HTTP首部字段
2.1 HTTP首部字段传递重要信息
HTTP 首部字段是构成 HTTP 报文的要素之一。
首部字段是为了给浏览器和服务器提供报文主体大小、所使用的语言、认证信息等内容。
2.2 HTTP首部字段结构
HTTP 首部字段是由首部字段名和字段值构成的,中间用冒号“:” 分 隔。
首部字段名: 字段值
多个值
首部字段名: 字段值,字段值
注:若 HTTP 首部字段重复了会如何
当 HTTP 报文首部中出现了两个或两个以上具有相同首部字段名时 会怎么样?这种情况在规范内尚未明确,根据浏览器内部处理逻辑 的不同,结果可能并不一致。有些浏览器会优先处理第一次出现的 首部字段,而有些则会优先处理最后出现的首部字段。
2.3 4种HTTP首部字段类型
通用首部字段(General Header Fields)
请求报文和响应报文两方都会使用的首部。
请求首部字段(Request Header Fields)
从客户端向服务器端发送请求报文时使用的首部。
补充了请求的附加内容、客户端信息、响应内容相关优先级等信息。
响应首部字段(Response Header Fields)
从服务器端向客户端返回响应报文时使用的首部。
补充了响应的附加内容,也会要求客户端附加额外的内容信息。
实体首部字段(Entity Header Fields)
针对请求报文和响应报文的实体部分使用的首部。补充了资源内容更新时间等与实体有关的信息。
2.5 End-to-end 首部和 Hop-by-hop 首部
HTTP 首部字段将定义成缓存代理和非缓存代理的行为,分成2种类型。
端到端首部(End-to-end Header)
分在此类别中的首部会转发给请求 / 响应对应的最终接收目标,
且必须保存在由缓存生成的响应中,另外规定它必须被转发。
逐跳首部(Hop-by-hop Header)
分在此类别中的首部只对单次转发有效,会因通过缓存或代理而不再 转发。
HTTP/1.1 和之后版本中,如果要使用 hop-by-hop 首部,需提 供 Connection 首部字段。
3. HTTP/1.1通用首部字段
通用首部字段是指,请求报文和响应报文双方都会使用的首部。
1.Cache-Control
通过指定首部字段 Cache-Control 的指令,就能操作缓存的工作机 制。
指令的参数是可选的,多个指令之间通过“,”分隔。首部字段 Cache-Control 的指令可用于请求及响应时。
Cache-Control 指令一览:
缓存请求指令
缓存响应指令
2.Connection
Connection 首部字段具备如下两个作用。
如要维持持续连接:
3.Date
首部字段 Date 表明创建 HTTP 报文的日期和时间。
4.Pragma
该首部字段属于通用首部字段,但只用在客户端发送的请求中。
客户端会要求所有的中间服务器不返回缓存的资源。
5.Trailer
首部字段 Trailer 会事先说明在报文主体后记录了哪些首部字段。
该首部字段可应用在 HTTP/1.1 版本分块传输编码时。
6.Transfer-Encoding
首部字段 Transfer-Encoding 规定了传输报文主体时采用的编码方式。
HTTP/1.1 的传输编码方式仅对分块传输编码有效。
7.Upgrade
首部字段 Upgrade 用于检测 HTTP 协议及其他协议是否可使用更高的版本进行通信,其参数值可以用来指定一个完全不同的通信协议。
8.Via
使用首部字段 Via 是为了追踪客户端与服务器之间的请求和响应报文的传输路径。
报文经过代理或网关时,会先在首部字段 Via 中附加该服务器的信 息,然后再进行转发。
首部字段 Via 不仅用于追踪报文的转发,还可避免请求回环的发生。
所以必须在经过代理时附加该首部字段内容。
9.Warning
HTTP/1.1 的 Warning 首部是从 HTTP/1.0 的响应首部(Retry-After)演变过来的。
该首部通常会告知用户一些与缓存相关的问题的警告。
格式:
7种警告码:
链接:有道云笔记