HTTP首部

1,245 阅读3分钟

这里有一份简洁的前端知识体系等待你查收,看看吧,会有惊喜哦~如果觉得不错,恳求star哈~


HTTP报文首部

HTTP协议的请求和响应报文中必定包含HTTP报文首部。首部内容分别为客户端和服务器处理请求和响应提供所需要的信息。

HTTP请求报文

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

HTTP响应报文

在响应中,HTTP报文由HTTP版本、状态码(数字和原因短语)、HTTP首部字段3部分构成

HTTP首部字段

request headers

  • 请求首部字段
  • 通用首部字段
  • 实体首部字段

response headers

  • 响应首部字段
  • 通用首部字段
  • 实体首部字段

一共有4种首部字段,下面会一一介绍

通用首部字段

请求报文和响应报文都会使用的首部

Cache-Control指令一览

缓存请求指令:

缓存响应指令:

Cache-Control:public :表明其他用户也可以利用缓存

Cache-Control:private:与public行为相反

Cache-Control:no-cache:目的是防止从缓存中返回过期的资源。客户端发送的请求如果包含no-cache,表示客户端不会接收缓存过的响应,于是中间的缓存服务器必须把客户端请求转发给源服务器,如果服务器返回的响应包含该字段,表示缓存服务器不能对资源进行缓存。若对no-cache字段名具体指定参数值,那么客户端在接收到这个被指定参数值的首部字段对应的响应报文后,就不能使用缓存。换言之,无参数值的首部字段可以使用缓存。只能在响应指令中指定该参数。

Cache-Control:no-store:暗示请求或响应包含机密信息,不能再本地存储请求或响应的任一部分。

注:事实上no-cache代表不缓存过期的资源,缓存会向源服务器进行有效期确认后处理资源,no-store才是真正地不进行缓存。

Cache-Control:s-maxage/max-age:指定缓存期限和认证的指令。s-maxage和max-age功能相同,只是s-maxage指令只适用于供多位用户使用的公共缓存服务器。当客户端请求中包含max-age指令时,如果判定缓存资源的缓存时间数值比指定时间的数值更小,那么客户端就接收缓存的资源。服务器响应中包含max-age指令时,缓存服务器将不对资源的有效性再做确认,max-age数值代表资源保存为缓存的最长时间。

Cache-Control:min-fresh:要求缓存服务器返回至少还未过指定时间的缓存资源。

Cache-Control:max-stale:指示缓存资源即使过期也照常接收。如果指令为指定参数值,则缓存始终可以被接收,如果指定了具体数值,即使过期,只要在max-stale指定的时间内,缓存仍旧会被客户端接收。

请求首部字段

请求报文使用的首部

响应首部字段

响应报文使用的首部

实体首部字段

请求报文和响应报文的实体部分使用的首部

逐跳首部

逐跳首部(Hop-by-hop Header):分在此类别中的首部只对单次转发有效,会因通过缓存或代理而不再转发。HTTP/1.1和之后版本中,如果要使用hop-by-hop首部,需提供Connection首部字段。逐跳首部字段包括如下字段:

端到端首部

端到端首部(End-to-end Header):此类别中的首部会转发给请求/响应对应的最终接收目标,且必须保存在由缓存生成的响应中,另外规定它必须被转发,除了逐跳首部字段,其他都是端到端首部字段