【图解HTTP读书笔记】第六章:HTTP首部

HTTP协议的请求和响应报文中必定包含HTTP首部,只是我们平时在使用Web的过程中感受不到它。

6.1 HTTP 报文首部

在这里插入图片描述
报文首部由几个字段构成。

HTTP 请求报文

在请求中,HTTP报文由方法URIHTTP版本HTTP首部字段等部分构成。

在这里插入图片描述

HTTP 响应报文

在响应中,HTTP报文由HTTP版本、状态码、HTTP首部字段三部分构成。

在这里插入图片描述

6.2 HTTP 首部字段

6.2.1 HTTP 首部字段传递重要信息

首部字段是为了给浏览器和服务器提供报文主体大小、所使用的语言、认证信息等内容。

在这里插入图片描述

6.2.2 HTTP 首部字段结构

HTTP首部字段是由首部字段和字段值构成的,格式为:

首部字段名:字段值

Content-Type首部字段表示报文主体的对象类型。

Content-Type:text/html

若HTTP首部字段重复了会如何呢?

这种情况根据浏览器内部处理逻辑的不同,结果可能不一致。

6.2.3 4种HTTP首部字段类型

  1. 通用首部字段(请求报文和响应报文两方都会使用的首部)
  2. 请求首部字段
  3. 响应首部字段
  4. 实体相应字段

6.2.4 HTTP/1.1 首部字段

1.1规范定义了如下47种首部字段:

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6.2.5 非 HTTP/1.1 首部字段

例如:Cookie、Set-Cookie、Content-Disposition等在其他RFC中定义的首部字段。

6.2.6 End-to-end 首部和 Hop-by-hop 首部

HTTP首部字段将定义成缓存代理非缓存代理的行为。

  • 端到端首部
    此类首部会转发给请求/响应对应的最终接收目标,且必须保存在由缓存生成的响应中,并且必须被转发。
  • 逐跳首部
    此类首部只对单次转发有效,会因通过缓存或代理而不在转发。

HTTP/1.1 中仅有的8个逐跳首部字段:

  • Connection
  • Keep-Alive
  • Proxy-Authenticate
  • Proxy-Authorization
  • Trailer
  • TE
  • Transfer-Encoding
  • Upgrade

6.3 HTTP/1.1 通用首部字段

6.3.1 Cache-Control

通过该指令就能操作缓存的工作机制。

在这里插入图片描述
Cache-Control 指令一览:

在这里插入图片描述
在这里插入图片描述
下边解释一些指令:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6.3.2 Connection

该字段有两个作用:

  • 控制不再转发给代理的首部字段
    在这里插入图片描述

  • 控制持久连接
    在这里插入图片描述
    HTTP1.1 之前默认都是非持久化连接.。持久连接需要加上== Keep-Alive==
    在这里插入图片描述

6.3.3 Data

该首部字段表明创建HTTP 报文的日期和时间。

在这里插入图片描述
在这里插入图片描述

6.3.4 Pragma

在这里插入图片描述
该字段是历史遗留字段,Cache-Control 指定是最理想的。但是可能中间服务器的版本不知道,一般会同含有两个字段。

在这里插入图片描述

6.3.5 Trailer

在这里插入图片描述
该首部字段会事先说明报文主体后记录了那些首部字段,可应用在分块传输编码时。分块传输见:第三章:HTTP报文内的HTTP信息

在这里插入图片描述

6.3.6 Transfer-Encoding

在这里插入图片描述
该首部字段规定了报文主体采用的编码方式。HTTP/1. 的传输编码方式仅对分块传输编码有效。
在这里插入图片描述

6.3.7 Upgrade

该字段用于检测HTTp协议及其他协议是否可使用跟高的版本进行通信。

在这里插入图片描述
该字段产生作用的对象仅限于客户端与临界服务器之间。因此需要搭配Connection:Upgrade。

6.3.8 Via

这个字段之前提到过,在代理服务器那块。用于记录经过的代理服务器,可以避免请求回环

在这里插入图片描述

6.3.9 Warning

该首部通常会告知用户一些与缓存相关的问题的警告

格式:
在这里插入图片描述

相关警告码:

在这里插入图片描述

6.4 请求首部字段

该字段用于补充请求的附加信息、客户端信息、对响应内容相关的优先级等内容。

在这里插入图片描述

6.4.1 Accept

在这里插入图片描述

6.4.2 Accept-Charset

在这里插入图片描述

6.4.3 Accept-Encoding

在这里插入图片描述

6.4.4 Accept-Language

在这里插入图片描述

6.4.5 Authorization

在这里插入图片描述

6.4.6 Expect

在这里插入图片描述

6.4.7 Form

在这里插入图片描述
用来告知服务器使用用户代理的用户的电子邮件地址。

6.4.8 Host

在这里插入图片描述

6.4.9 If-Match

在这里插入图片描述
条件请求:

在这里插入图片描述

6.4.10 If-Modified-Since

在这里插入图片描述

6.4.11 If-None-Match

在这里插入图片描述

6.4.12 If-Range

在这里插入图片描述
否则全部返回:
在这里插入图片描述

6.4.13 If-Unmodified-Since

在这里插入图片描述

和If-Modified-Since 相反,在日期之后未发生更新,才能处理请求。

6.4.14 Max-Forwards

在这里插入图片描述
在这里插入图片描述

6.4.15 Proxy-Authorization

在这里插入图片描述
接收到从代理服务器发来的认证质询时,客户端会发送包含该首部字段的请求,已告知服务器认证所需要的信息。

6.4.16 Range

在这里插入图片描述
指定资源范围。

6.4.17 Referer

在这里插入图片描述

6.4.18 TE

在这里插入图片描述
该字段会告知服务器客户端能够处理响应的传输编码方式及相对优先级。

6.4.19 User-Agent

在这里插入图片描述

6.5 响应首部字段

在这里插入图片描述

6.5.1 Accept-Range

在这里插入图片描述

6.5.2 Age

在这里插入图片描述

6.5.3 ETag

在这里插入图片描述
在这里插入图片描述

6.5.4 Location

在这里插入图片描述

6.5.5 Proxy-Authenticate

在这里插入图片描述

6.5.6 Retry-After

在这里插入图片描述

6.5.7 Server

在这里插入图片描述

6.5.8 Vary

在这里插入图片描述

6.5.9 WWW-Authenticate

在这里插入图片描述
该字段用于HTTP访问认证。

6.6 实体首部字段

在这里插入图片描述

6.6.1 Allow

在这里插入图片描述

6.6.2 Content-Encoding

在这里插入图片描述

6.6.3 Content-Language

在这里插入图片描述

6.6.4 Content-Length

在这里插入图片描述

6.6.5 Content-Location

在这里插入图片描述
在这里插入图片描述

6.6.6 Content-MD5

在这里插入图片描述

6.6.7 Content-Range

在这里插入图片描述

6.6.8 Content-Type

在这里插入图片描述

6.6.9 Expires

在这里插入图片描述

6.6.10 Last-Modified

在这里插入图片描述

6.7 为Cookie 服务的首部字段

在这里插入图片描述
相关Cookie的可以参考:深入理解HTTP协议

参考文献:《图解HTTP》

猜你喜欢

转载自blog.csdn.net/weixin_45532227/article/details/112863173