图解HTTP第6章.读书笔记

第六章

HTTP报文首部

  1. 请求行
  2. 首部字段:给浏览器提供报文主体大小,所使用的语言,认证信息等内容
    其结构为:首部字段名:字段值 content-type: text/html or keep-alive: timeout = 15, max = 100
    4中HTTP首部字段类型:
    1. 通用首部字段
    2. 请求首部字段
    3. 响应首部字段
    4. 实体首部字段

End-to-end 首部和 Hop-by-hop 首部
HTTP首部字段将定义为缓存代理和非缓存代理的行为,分为2种类型

  1. 端到端首部:分在此类的首部回转发给请求/响应对英的最终接受目标,且必须保存在由缓存生成的响应种,另外规定它必须被转发
  2. 逐级跳步:分在此类别的首部只对单次转发有效,会因通过缓存或代理而不在转发。

HTTP/1.1通用首部字段:请求和响应报文都会使用的首部

  1. cache-control指令,能操作缓存
    cache-control: public 表明其他用户也可以利用缓存
    cache-control: private 指令private指令后,响应只以特定的用户作为对象
    cache-control: no-cache 防止从缓存中返回过期的资源,如果发送的请求种包含no-cache指令,则表示客户端将不会接受缓存过的响应。于是中间的缓存服务器必须把客户端的请求转发给源服务器。如果服务器返回的响应中包含no-cache,那缓存服务器以后将不在对缓存服务器请求中提出的资源有效性进行确认,且禁止其对资源进行缓存操作
    Cache-control: no-store 暗示请求或响应包含机密信息,该指令规定缓存不能在本地存储请求或响应的任一部分
    cache-control: s-maxage=604800 功能同max-age相同,不同点是,s-maxage指令只适用于供多位用户使用的公共缓存服务器
    cache-control: max-age=604800 当请求中包含max-age指令时,如果判断资源的缓存时间数值比指定时间的数值更小,那客户端就接受缓存的资源。如果指定时间为0,九江请求转发给源服务器。当响应中包含指令时候,缓存服务器将不对资源有效性进行确认,而max-age数值代表资源保存为缓存的最长时间
    cache-control: min-fresh=60 要求缓存服务器返回至少还未指定时间的缓存资料,此时指令min-fresh为60,60秒后如果有超过有效期限的资源都无法作为响应返回
    cache-control: max-stale=3600 可指示缓存资源,即使过期也照常接受。如果未指示参数值,无论经过多久,客户端都会接受响应,如果指定了具体数值,那即使过期,只要处于max-state指定的时间内,仍旧会被接收
    cache-control: only-if-cached 表示客户端仅在缓存服务器本地缓存目标资源的情况下才会要求其返回。
    cache-control: must-revalidate 代理会向源服务器再次验证即将返回的响应缓存是否仍然有效。若代理无法连接源服务器咋次获得有效资源,缓存必须给用户端一条504状态码
    cache-control: proxy-revalidate 要求所有缓存服务器在接受到客户端带有该指令的请求返回响应之前,必须再次验证缓存的有效性
    cache-control: no-transform 指令无论是在请求还是响应中,缓存都不能改变实体主体的媒体类型。这样做可以防止缓存货代理压缩图片等操作

  2. Connection,具有两个作用,控制不再转发给首部的代理字段,管理持久连接
    控制不再转发给首部的代理字段:让代理服务器将connection后的首部字段删除后转发给源服务器,即Hop-by-hop首部
    管理持久连接:1. 由服务器发送向客户端,connection:close则会断开连接。2. 由客户端发往服务器,connection:keep-alive用于HTTP/1.1之前的HTTP版本上保持持久连接

  3. Date表明创建HTTP报文的日期和时间

  4. Pragma是历史遗留字段,规范定义的形式唯一,pragma:no-cache
    该首部字段属于通用首部字段,但只存在于客户端发送的请求中。客户端会要求所有的中间服务器不返回缓存的资源。因为不确定中间服务器的版本,会同时发送pragma和cache-control两个首部字段

  5. trailer
    会事先说明在报文主体后记录了那些首部字段。

  6. transfer-encoding
    规定传输报文主体时采用的编码方式

  7. upgrade
    Upgrade用来检验HTTP协议及其他协议是否可以用更高的版本进行通信,其参数值可以用来指定一个完全不一样的通信协议。upgrade首部字段产生作用的upgrade对象仅限于客户端和邻接服务器之间。因此,使用首部字段upgrade时,还需额外指定connection:upgrade。对附有upgrade的首部字段请求,服务器可以用101 switching protocols状态码作为响应返回

  8. via
    使用via追踪客户端与服务器之间的请求和响应报文的传输路径。报文经过代理或网关时,会先在首部字段via中附加该服务器的信息,然后再进行转发

  9. warning

发布了47 篇原创文章 · 获赞 10 · 访问量 1751

猜你喜欢

转载自blog.csdn.net/Antonio_Salieri/article/details/94393969