Http基础知识学习(三),第6章摘抄

6HTTP 首部

HTTP协议的请求和响应报文中必定包含HTTP首部

6.1 HTTP报文首部

《Http基础知识学习(三),第6章摘抄》 报文结构

HTTP协议的请求和响应报文中必定包含HTTP首部。首部内容为客户端和服务器分别处理请求和响应提供所需要的信息。对于客户端用户来说,信息中的大部分内容都无须亲自查看

报文首部由几个字段构成

  • HTTP 请求报文

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

《Http基础知识学习(三),第6章摘抄》 请求报文

  • HTTP 响应报文

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

《Http基础知识学习(三),第6章摘抄》 响应报文

具体示例:

《Http基础知识学习(三),第6章摘抄》 响应报文举例

6.2 HTTP首部字段

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

作用:向浏览器和服务器提供报文主体大小、所使用的的语言、认证信息等

《Http基础知识学习(三),第6章摘抄》 首部字段

6.2.2 HTTP首部字段结构

HTTP首部字段由首部字段名和字段值构成,中间用冒号:分隔,形式便是首部字段名:字段值
例如,使用Content-Type表示报文主体的对象类型

COntont-Type:text/html

字段值对应单个HTTP首部字段可以有多个值

Keep-Alive:timeout = 15, max = 100

6.2.3 4种HTTP首部字段类型

首部字段分4种类型:

  • 通用首部字段General Header Fields

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

  • 请求首部字段Request Header Fields

    从客户端向服务端发送请求报文时使用的首部。补充了请求的附加内容、客户端信息、响应内容相关优先级等信息

  • 响应首部字段Response Header Fields

    从服务器端向客户端返回响应报文时使用的首部。补充了响应的附加内容,也会要求客户端附加额外的内容信息

  • 实体首部字段Entity Header Fidlds

    针对请求报文和响应报文的实体部分使用首部。补充了资源内容更新时间等实际与实体有关的信息

6.2.4 HTTP/1.1 首部字段一览

HTTP/1.1 47种首部字段

实在不想把表格敲一遍了,就直接偷懒,截图了

  • 通用首部字段
    《Http基础知识学习(三),第6章摘抄》 通用字段首部
  • 请求首部字段
    《Http基础知识学习(三),第6章摘抄》 请求首部字段
  • 响应首部字段
    《Http基础知识学习(三),第6章摘抄》 响应首部字段
  • 实体首部字段
    《Http基础知识学习(三),第6章摘抄》 实体首部字段

6.3 HTTP/1.1 通用首部字段

通用首部是指请求报文和响应报文都会用到的首部

6.3.1 Cache-Control

通过指定首部Cache-Control的指令,操作缓存的工作机制

《Http基础知识学习(三),第6章摘抄》 Cache-Control

指令可选,多个指令之间通过,分隔。首部字段Cache-Control指令可用于请求及响应时

Cache-Control :private ,max-age = 0,no-cache

Cache-Control指令一览

  • 缓存请求指令
    《Http基础知识学习(三),第6章摘抄》 缓存请求指令
  • 缓存响应指令
    《Http基础知识学习(三),第6章摘抄》 缓存响应指令
  • public:其他用户也可以利用缓存
  • private:响应只以特定的用户作对象,与public指令行为相反
    《Http基础知识学习(三),第6章摘抄》 private
    缓存服务器,会对该特定用户提供资源缓存的服务,对于其他用户发来请求,不会返回缓存
  • no-cache指令:不缓存过期资源
    《Http基础知识学习(三),第6章摘抄》 no-cache指令

作用:防止从缓存中返回过期的资源

客户端发送包含no-cache指令,客户端将不会接受缓存过的响应。“中间”的缓存服务器必须把客户端必须把客户端请求转发给源服务器

如果服务器返回的响应包含no-cache指令,缓存服务器不能对资源进行缓存。源服务器以后将不再对缓存服务器请求中提出的资源有效性进行确认,且禁止其对响应资源进行缓存操作

Cache-Control : no-cache=Location

由服务器返回的响应中,若报文首部字段Cache-Control中对no-cache字段名具体指定参数值,客户端在接收到的这个被指定参数值的首部字段对应的响应报文后,就不能使用缓存。无参数值的首部字段可以使用缓存,只能在响应指令中指定该参数

  • no-store:不缓存,缓存不能在本地存储请求或响应的任一部分

指定缓存期限和认证的指令

  • max-age指令
    《Http基础知识学习(三),第6章摘抄》 max-age

当客户端发送的请求中包含max-age指令时,如果判定缓存资源的缓存时间数值比指定时间小,客户端就接收缓存的资源。若max-age = 0,缓存服务器需要将请求转发给源服务器

当源服务器返回的响应中包含max-age指令时,缓存服务器将不对资源的有效性再作确认,而max-age数值代表资源保存为缓存的最长时间

  • max-statle:过期也照常接收缓存

如果指令未指定参数值,无论经过多久,客户端都会接收响应;如果指令中指定来具体数值,即使过期,只要仍处于max-statle指定时间内,仍旧会被客户端接收

  • only-if-cached

仅在缓存服务器有本地缓存目标资源的情况下,才会返回。要求服务器不重新加载响应,也不会再次确认资源有效性。若发生请求缓存服务器的本地缓存无响应,则返回504 Gateway Timeout

还有一大堆,不想摘抄了,用到直接百度好了

6.4 为Cookie服务首部字段

Cookie的工作机制是用户识别及状态管理。

首部字段名说明首部类型
Set-Cookie开始状态管理所使用的Cookie信息响应首部字段
Cookie服务器接收到的Cookie信息请求首部字段

《Http基础知识学习(三),第6章摘抄》 Cookie首部
《Http基础知识学习(三),第6章摘抄》 Set-Cookie字段的属性

最后

第6章,抄着不想抄了,看了看,也没记住啥

有错误,请指出

共勉 :)

    原文作者:英勇青铜5
    原文地址: https://www.jianshu.com/p/1a55fb9afe2d
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞