• 缓存控制优先级从高到低分别是Pragma -> Cache-Control -> Expires

  • 报头
    每一个报头都是由 [名称 + ":" + 空格 + 值 + ] 组成。有四种不同类型的报头:
  1. 通用报头:可用于请求,也可以用于响应,它是作为一个整体而不是特定的资源与事务相关联。
  2. 请求报头:允许客户端传递关于自身的信息和希望得到的响应格式。
  3. 响应报头:服务端关于传递自身信息的响应。
  4. 实体报头:定义被传输资源的信息,可以用于请求,也可以用于响应。
    注意,每个报头后必须以 <CR><LF>(即 \r\n)结尾,报头与主体之间以<CR><CL>分割。
  • 通用报头
    通用头包含请求和响应消息都支持的头域,但不能用于实体报头。对通用报头的扩展要求通讯双方都支持此扩展,若存在不支持的通用报头,一般会作为实体头域处理。
    既可以出现在请求报头,也可以出现在响应报头中

table th:first-of-type {
width: 150px;
}
table th:nth-of-type(2) {
width: 150px;
}

报头名称 说明
Cache-Control 指定请求和响应遵循的缓存机制。
  public 指示所有的内容都将被缓存(客户端和代理服务都可缓存)
  private 默认值,指示内容只缓存到私有缓存中(仅客户端可以缓存,代理服务器不能缓存)
  no-cache 指示请求或响应消息不能缓存。
  no-store 指示所有的内容都不会被缓存到缓存或 Internet 临时文件中。
  max-age 指示缓存的内容将在多少秒后失效,仅在 HTTP/1.1 可用,与 Last-Modified 一起使用时,优先级更高。
  must-revalidate 若缓存失效,请求必须发生到服务器以进行重新验证。
Date 表示消息产生的日期和时间。
Pragma 唯一值为 no-cache,表示服务器必须返回一个刷新后的文档。其作用等价于 Cache-Control: no-cache。在 HTTP/1.0 版本中,只实现了 Pragma: no-cache,而 Cache-Control 是在 HTTP/1.1 引入的。
Connection 允许发送指定连接的选项。
  keep-alive 客户端与服务器的连接不关闭,后续会再次使用这一条连接。
  close 表示一个请求完成后,客户端与服务器断开连接。
Transfer-Encoding 标明报文主体的传输编码方式。 若是请求和响应的头信息中都要 Transfer-Encoding: chunked , 表明回应将由数量未定的数据快组成。在每个非空的数据块之前,会一个 16 进制的数值,表示这个块的长度。最后是一个大小为 0 的块,表示本次回应的数据发送完毕。
Upgrade 升级为其他协议,允许服务器指定一种新的协议或新的协议版本,与响应编码 101(切换协议)配合使用。
Via 代理服务器相关信息。
Referrer Policy 共5种策略:no-referrer、no-referrer-when-downgrade(默认)、origin、origin-when-crossorigin、unsafe-url。详情:https://imququ.com/post/referrer-policy.html
  • 请求报头
    请求报头允许客户端向服务端传输请求的附加信息以及客户端自身的信息。在 HTTP/1.1 协议中,所有的请求头,除 Host 外,都是可选的。

table th:first-of-type {
width: 150px;
}
table th:nth-of-type(2) {
width: 150px;
}

报头名称 说明
Accept 用于指定客户端接受哪些类型的信息。
Accept-Charset 用于指定客户端接受的字符集。
Accept-Encoding 用于指定客户端可接受的内容编码。如 gzip、deflate
Accept-Language 用于指定客户端可接受的自然语言。如 zh-cn、de
Authorization 用于证明客户端有权限查看某个资源。
Cookie 用于将 Cookie 值发送给服务器。
Host 用于指定被请求资源的主机和端口号。
If-Modified-Since 请求时指定资源的最后修改时间,用于比较资源的更新时间,与 Last-Modified 一起配合 Cache-Control 使用。当资源过期时(Cache-Control 中 max-age 设置),发现资源有 Last-Modified 声明,则再次向服务器请求时带上 If-Modified-Since,表示请求时间。服务器收到请求后发现头有 If-Modified-Since ,则与被请求的资源进行最后修改时间进行对比。若最后修改时间较新,说明资源又被改动过,则响应整片资源内容(200);若最后修改时间较旧,说明资源没有修改,会响应 304,告知浏览器继续使用保存的 cache 。
If-None-Match 请求时加上的资源 ETag 值,用于比较实体标识(ETag),与 ETag 一起配合 Cache-Control 使用。当资源过期时(Cache-Control 中 max-age 设置),发现资源有 ETag 声明,则再次向服务器请求带上 If-None-Match (ETag 值)。服务器收到请求后发现头 If-None-Match,则与被请求资源相应校验串进行对比,返回 200 或 304 。
Referer 用于指定客户端是从哪个资源来访问服务器的,可用于防盗链。
User-Agent 允许客户端将其操作系统、浏览器和其它属性告诉服务器。
  • 响应报头
    响应报头允许服务器传递不能放在状态行中的附加信息,以及关于服务器的信息和对 Request-URL 所标识的资源进行下一步访问的信息。

table th:first-of-type {
width: 150px;
}
table th:nth-of-type(2) {
width: 150px;
}

报头名称 说明
ETag 缓存相关的头,可用于实时更新。和 If-None-Match 配合使用。 ETag 主要作用是在文件后面添加一个唯一的参数,该参数由服务器生成,并随着文件的改变而改变。下次浏览器只需要重新获取 ETag 发送了变化的文件。
Location 用于重定向一个新的位置。该响应状态码为 302(临时重定向),常用于在更换域名时。
Server 与 User-Agent 相对应,包含了服务器用来处理请求的软件信息。
WWW-Authenticate 包含在 401(为授权)响应信息中,当客户端收到 401 响应消息,并发送 Authorization 报头请求服务器对其进行验证时,服务器端响应报头就会包含该消息。
Vary Accept-Encoding 指定Vary: Accept-Encoding标头可告诉代理服务器缓存两种版本的资源:压缩和非压缩,这有助于避免一些公共代理不能正确地检测Content-Encoding标头的问题。
X-Content-Type-Options nosniff 1.互联网上的资源有各种类型,通常浏览器会根据响应头的Content-Type字段来分辨它们的类型。例如:”text/html”代表html文档,”image/png”是PNG图片,”text/css”是CSS样式文档。然而,有些资源的Content-Type是错的或者未定义。这时,某些浏览器会启用MIME-sniffing来猜测该资源的类型,解析内容并执行。2.如果服务器发送响应头 “X-Content-Type-Options: nosniff”,则 script 和 styleSheet 元素会拒绝包含错误的 MIME 类型的响应。这是一种安全功能,有助于防止基于 MIME 类型混淆的攻击。
X-Frame-Options 给浏览器指示是否允许一个页面在 <frame>, <iframe> 或者 <object> 中展现。X-Frame-Options 有三个值:1.DENY,表示该页面不允许在 frame 中展示,即便是在相同域名的页面中嵌套也不允许。2.SAMEORIGIN:表示该页面可以在相同域名页面的 frame 中展示。3.ALLOW-FROM uri:表示该页面可以在指定来源的 frame 中展示。换一句话说,如果设置为 DENY,不光在别人的网站 frame 嵌入时会无法加载,在同域名页面中同样会无法加载。另一方面,如果设置为 SAMEORIGIN,那么页面就可以在同域名页面的 frame 中嵌套。
  • 实体报头
    实体报头定义了关于实体的元信息,实体信息一般由实体报头和实体组成。

table th:first-of-type {
width: 150px;
}
table th:nth-of-type(2) {
width: 150px;
}

报头名称 说明
Content-Encoding 指明数据的压缩方法。发送数据可以是任何格式,我们可以把数据压缩后再发送客户端请求时,Accept-Encoding 指明可以接受哪些压缩方法。
Content-Language 描述资源所用的自然语言。
Content-Length 指明响应的实体正文的长度。 对于 HTTP/1.1 引入的持久连接机制,一个 TCP 连接可以传送多个响应,此时要区分数据包是属于哪一个响应的。Content-Length 指明本次响应的数据长度,当到达指定的长度后,后面的字节就属于下一个响应了。
Content-Type 指明发送给接收者的实体正文的媒体类型(MIME)。 客户端请求时,Accept 指明可以接受哪些类型。
Content-Disposition 指明浏览器以下载的方式打开数据。
Last-Modified 指明资源最后修改的时间(该文件在服务器端最后修改的时间)。 当 Last-Modified 与 ETag 一起使用时,服务器会优先验证 ETag。
Expires 指明响应文档过期的日期和时间。当文档过期后,会重新从服务器获取,并更新缓存。 为了让代理服务器或浏览器在一段时间后更新缓存的页面,可通过 Expires 指定页面过期的时间。当设置为 0 时,表示不让浏览器缓存页面。Expires 等同与 Cache-Control: max-age ,但若同时存在,则会被后者覆盖。Expires 属于 HTTP/1.0 的产物,从 HTTP/1.1 开始,使用 Cache-Control: max-age= 代替。

HTTP报头:通用报头,请求报头,响应报头和实体报头的更多相关文章

  1. HTTP协议简介详解 HTTP协议发展 原理 请求方法 响应状态码 请求头 请求首部 java模拟浏览器客户端服务端

    协议简介 协议,自然语言里面就是契约,也是双方或者多方经过协商达成的一致意见; 契约也即类似于合同,自然有甲方123...,乙方123...,哪些能做,哪些不能做; 通信协议,也即是双方通过网络通信必 ...

  2. Http 请求头 响应体 详解

    Referrer Policy 是什么? 我们知道,在页面引入图片.JS 等资源,或者从一个页面跳到另一个页面,都会产生新的 HTTP 请求, 浏览器一般都会给这些请求头加上表示来源的 Referre ...

  3. http协议(二)请求和响应报文的构成

    http协议用于客户端和服务器之间的通信,请求访问资源的一方称为客户端,而提供资源响应的一方称为服务器端. 下面就是客户端和服务端之间简单的通信过程 PS:请求必须从客户端建立通信,服务端没收到请求之 ...

  4. express-6 请求和响应对象(1)

    URL的组成部分 协议: 协议确定如何传输请求.我们主要是处理http和https.其他常见的协议还有file和ftp. 主机名: 主机名标识服务器.运行在本地计算机(localhost)和本地网络的 ...

  5. HTTP请求与响应方式

    HTTP请求格式 当浏览器向Web服务器发出请求时,它向服务器传递了一个数据块,也就是请求信息,HTTP请求信息由3部分组成: l   请求方法URI协议/版本 l   请求头(Request Hea ...

  6. 【渗透课程】第二篇下-HTTP协议的请求与响应深度剖析

    [渗透课程]第二篇下-HTTP协议的请求与响应深度剖析 HTTP1.1目前支持以下7种请求方法: 常见的MIME类型如下: 第一个数字有五种可能的取值: 目录 什么是请求方法?什么是请求头? HTTP ...

  7. python爬虫(二)_HTTP的请求和响应

    HTTP和HTTPS HTTP(HyperText Transfer Protocol,超文本传输协议):是一种发布和接收HTML页面的方法 HTTPS(HyperText Transfer Prot ...

  8. http协议基础(二)请求和响应报文的构成

    http协议用于客户端和服务器之间的通信,请求访问资源的一方称为客户端,而提供资源响应的一方称为服务器端. 下面就是客户端和服务端之间简单的通信过程 PS:请求必须从客户端建立通信,服务端没收到请求之 ...

  9. HTTP协议--请求与响应

    1.简介 HTTP 是一个属于应用层的面向对象的协议,由于其简捷.快速的方式,适用于分布式超媒体信息系统.它于1990 年提出,经过几年的使用与发展,得到不断地完善和扩展.目前在WWW 中使用的是HT ...

随机推荐

  1. 在linux中,如何增加、修改、删除、暂停和冻结用户名

    在Linux中,如何增加.修改.删除.暂停和冻结用户名 在操作增加.修改和删除用户名前,先认识linux中两个最重要的文件,它们就是账号管理最重要文件“/etc/passwd”与“etc/shadow ...

  2. java深浅拷贝

    转载:http://atjava.iteye.com/blog/1722501 首先我们看看浅拷贝和深拷贝的定义 浅拷贝:只复制一个对象,对象内部存在的指向其他对象数组或者引用则不复制 深拷贝:对象, ...

  3. spark RDD底层原理

    RDD底层实现原理 RDD是一个分布式数据集,顾名思义,其数据应该分部存储于多台机器上.事实上,每个RDD的数据都以Block的形式存储于多台机器上,下图是Spark的RDD存储架构图,其中每个Exe ...

  4. 51nod1615

    题解: 首先,当1+2+...+n=x时,答案就是n 如果1+2+...+n不会等于x,那么找一个最小的n,让1+2+....+n>x并且(1+2+.....+n-x)%2=0 代码: #inc ...

  5. HTML(一)基础

    一.HTML简介 文本标记语言,即HTML(Hypertext Markup Language),是用于描述网页文档的一种标记语言. HTML之所以称为超文本标记语言,是因为文本中包含了所谓“超级链接 ...

  6. (转载)Hibernate的事务管理

    Hibernate的事务管理 事务(Transaction)是工作中的基本逻辑单位,可以用于确保数据库能够被正确修改,避免数据只修改了一部分而导致数据不完整,或者在修改时受到用户干扰.作为一名软件设计 ...

  7. DevExpress v17.2新版亮点—WinForms篇(一)

    用户界面套包DevExpress v17.2终于正式发布,本站将以连载的形式为大家介绍各版本新增内容.开篇介绍了DevExpress WinForms v17.2 Data Grid Control ...

  8. L240

    Giant rocks from space are falling from the sky more than they used to, but don't worry. For the pas ...

  9. 添加react-router

    1.index.js 内容: import React from 'react' import ReactDOM from 'react-dom' import { renderRoutes } fr ...

  10. Linux文件系统之Mount流程分析

    转载:原文地址http://www.linuxeye.com/linuxrumen/1121.html 本质上,Ext3 mount的过程实际上是inode被替代的过程.例如,/dev/sdb块设备被 ...