14

HTTP03

通用首部字段

Cache-Control

缓存请求指令:

  • no-cache

  • no-store

  • max-age

  • max-stale : 表示缓存资源即使过期也同样接收

  • min-fresh : 在指定的时间内,缓存是可以使用的

  • no-transform

  • only-if-cached :表示客户端仅在缓存服务器本地缓存资源的情况下,才会要求其返回

  • cache-extension

缓存响应指令:

  • public :表明其他用户也可以利用缓存

  • private :与 public 指令相比,仅允许特定的用户来使用缓存

  • no-cache :如果在客户端请求中,则表示客户端不会接收来自缓存服务器的数据;

如果在服务器响应中则说明服务器禁止缓存服务器进行缓存操作;

如果在服务器返回的响应中,带有 no-cache=Location 的参数指定,则表示客户端在接收到缓存以后不能使用缓存。

  • no-store :表示不缓存资源,与no-cache的最大区别在于,后者表示不缓存过期的资源。当使用该指令时往往表示报文主体中

包含有敏感信息。

  • no-transform :无论是在请求还是在响应中,缓存都不能改变实体主体的媒体类型

  • must-revalidate :代理将会再次向服务器响应进行验证即将返回的缓存是否仍然有效,如果代理服务器无法再次连接服务器则返回

给客户端一条504 状态码

  • proxy-revalidate :所有的代理服务器会在客户端接收到响应之前,需要验证缓存的有效性

  • max-age :表示缓存存在的最大期限

  • s-maxage:表示对公共缓存服务器的缓存进行过期验证,对于单个C/S来说,这个指令无意义

  • cache-extension :可以扩展首部字段的指令

Connection

  • 控制不再转发给代理的首部字段 Connection:不再转发的首部字段

  • 管理持久连接

Date

http请求或者响应创建的时间

Trailer

  • 事先说明在报文主体后记录了哪些首部字段,并且该首部字段可以再分块传输编码时使用。即提前说明有哪些首部字段

Transfer-Encoding

  • 规定了传输报文主体时采用的编码方式,http/1.1 仅对分块传输有效

Upgrade

用于检测http协议及其他协议是否可用更高版本进行通信。

Via

使用首部字段Via是为了追踪客户端与服务器之间的请求和响应报文的传输路径。报文在经过代理和网关时,会在首部字段 via 中附加该服务器的信息,然后在进行转发。via首部字段还可以用来避免请求回环的发生,所以有必要在经过代理时附加该首部字段。

请求首部字段

Accept

可以通知服务器,用户代理能够处理的资源类型的优先级。可以使用q={0,1}之间的数字来指定权重

Accept-Charset

客户端支持的字符集以及它们之间的相对优先顺序 同样 q 可以代表权重

Accept-Encoding

客户端支持的内容编码以及内容编码的优先顺序

Accept-Language

类似上面的

Authorization

通知服务器,用户代理的认证信息

Except

期望能够出现某种特定的行为。如果服务器端发出的响应错误时,会返回状态码417

From

告知服务器客户端使用的邮箱地址

Host

如果运行在虚拟主机上时,因虚拟主机有多个域名,但是只有一个IP,所以应该使用该首部字段加以区分

唯一一个必须被包含在请求内部的首部字段

note:

http协议允许一台http服务器为多位用户提供服务,可以通过使用虚拟主机实现这个功能。除了客户端和服务器与外,还可以有一些用于通信数据转发的应用程序。

代理

代理服务器的基本工作就是接受来自客户端的请求并且转发给其他服务器,代理不改变请求URI,而是直接方发送给目标服务器。在http通信的过程中,可以级联很多服务器,只是转发时需要附加VIA首部字段以标记经过的主机信息。

网关

网关的工作机制和代理相似,只是网关可以使通信线路上的服务器提供其他形式的协议服务。利用网关可以提高通信安全,例如可以连接数据库使用SQL语句进行查询。

隧道

隧道可以建立一条安全的通信渠道,隧道本身并不会解析http请求,它只是在公有管道的基础上提供一个私有管道,通过这个管道使得通信更加的隐秘。

If-XXX

形如上面这样的请求都可以称之为条件请求,只有在满足条件请求后才会处理该请求。

ETag

一种与特定资源关联的确定值,随着资源的更新而更新。

  • If-Match
  • If-Modified
  • If-None-Match
  • If-Range
  • If-Unmodified-Since

Max-Forwards

指定最大转发的次数,以十进制整数进行定义,当该字段变成0以后,服务器就会立即返回响应。

Proxy-Authorization

这个行为与客户端/服务器之间的认证相似,不同之处在于认证行为发生在客户端与代理之间。

Range

只获取部分资源的范围请求。如果无法返回范围请求的资源,则会返回200 OK 极其所有资源。

Referer

TE

User-Agent

响应首部字段

Accept-Ranges

用来告知客户端服务器能否处理所要求的范围字段,如果能则指定其为bytes,否则为none。

Age

告诉客户端在多久前创立了响应代理创建响应时必须要加上首部字段。

ETag

将资源以字符串形式进行标记,当资源更新时,他也会随之更新。

强ETag值,不论实体发生什么变化,都会改变其值。

Location

可以将响应接受方引导至某个与请求URI位置不同的资源。

Proxy-Authenticate

会把由代理服务器所要求的认证信息发送给客户端

Server

当前服务器上安装的http服务器应用程序信息。

Vary

当接收到来自客户端的请求的时候,验证一下Vary字段的信息是否一致,如果一致,则从代理服务器直接返回响应。反之,则先要从服务器端获取资源才能返回响应。

实体首部字段

Allow

可使用的URI的方法

Content-Encoding

实体主体内容的主体编码方式

Content-Language

Content-Length

表明了实体主体部分的大小,并且在对实体主体内容进行传输的时候,不能在使用该字段。

Content-Location

报文主体返回资源,所对应的URI。当访问的页面内容与返回的内容不相同的时候,在Conetent-Location内部会写明URI。

Content-MD5

用MD5算法来验证其是否报文主体在传递的过程中是否还完整。

将报文主体进行MD5算法得到128位整数,然后再通过BASE64编码。将结果写入该字段。

Content-Range

Content-Type

Expires

将资源失效的日期告知给客户端,当时间超过指定日期后,再次接收到请求时,缓存服务器会转向服务器请求资源。

但是当首部字段Cache-Control含有max-age时,则会优先处理max-age。

Last-Modified

该资源最近一次被修改的日期

HTTPS