【HTTP】HTTP首部(1)

1.HTTP报文首部

  • HTTP请求报文

【HTTP】HTTP首部(1)

  • HTTP响应报文

【HTTP】HTTP首部(1)

 2.HTTP首部字段

  • HTTP首部字段结构

首部字段名:字段值

例如:Content-Type:text/html

另外,字段值对应的单个首部字段可以有多个值。

  • 端到端首部

分在此类中的首部回转发给请求/响应对应的最终接收目标,而且必须保存在由缓存生成的响应中,另外规定它必须转发。

  • 逐跳首部

分在此类别的中的首部只对单次转发有效,会因通过代理或者缓存而不再转发,1.1版本之后,如果要使用逐跳首部,需要提供Connection首部字段。

除了下面8种首部字段之外,其他都属于端到端首部字段

【HTTP】HTTP首部(1)

 3.HTTP/1.1 通用首部字段

  • Cache-Contro

1.缓存请求指令

【HTTP】HTTP首部(1)

2.缓存响应指令

【HTTP】HTTP首部(1)

1.no-cache和no-store的区别

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

 2.s-maxage和max-age的区别(计算过期之后的时间)

     s-maxage指令适用于供多服务器使用的公共缓存服务器。也就是说,对于向用一个用户重复返回响应的服务器来说,这个指令没有任何作用。

3.min-fresh(计算没有过期的时间)

4.no-transform:规定缓存不能改变实体主体的媒体类型(可防止被压缩)

  • Connection

这个字段具备以下两个作用:

1.控制不再转发给代理的首部字段

2.管理持久连接

close

【HTTP】HTTP首部(1)

Keep-Alive

【HTTP】HTTP首部(1) 持久化连接

  • Trailer

这个首部字段会事先说明在报文主体后面记录了哪些首部字段,该首部字段可应用在分块传输编码时。

【HTTP】HTTP首部(1)

  • Tranfor-Encoding

【HTTP】HTTP首部(1)

HTTP/1.1只是对分块传输编码有效

【HTTP】HTTP首部(1)

  • Upgrade

用于检测HTTP协议及其他协议是否可以使用更高的版本进行通信,其参数值可以指定一个完全不同的通信协议。

【HTTP】HTTP首部(1)

在上面的例子中Connection的值被指定为Upgrade,Upgrade字段产生的结果仅局限于客户端和邻接服务器之间。因此需要使用Connection。 

  • Via

 追踪客户端和服务器之间的请求和响应报文的传输路径。

【HTTP】HTTP首部(1)

via会经常和TRACE方法一起使用,当TRACE中的Max-Forwards:0时,代理服务器就不再转发请求了,这种情况下,代理服务器会将自身的信息附加到Via首部后面,返回该请求的响应。

  • Warning

【HTTP】HTTP首部(1)

4. 请求首部字段

  •  Accept

【HTTP】HTTP首部(1)

例子:

【HTTP】HTTP首部(1)

  • Accept-Charset

【HTTP】HTTP首部(1)

 q 代表权重。

  • Accept-Encoding

【HTTP】HTTP首部(1)

告知服务器用户代理支持的内容编码及内容编码的格式以及优先级顺序。

【HTTP】HTTP首部(1)

  • Accept-Language

【HTTP】HTTP首部(1)

 用来告知服务器用户代理能够处理的自然语言集以及相对的优先级。

  • Expect

Except:100-continue

用来告知服务器,期望出现的某种特定行为。因服务器无法理解客户端的期望作出回应而发送错误时,会返回417.

  • Form

【HTTP】HTTP首部(1)

 告知服务器使用用户代理的用户的电子邮件地址。

  • if-Match

【HTTP】HTTP首部(1)

【HTTP】HTTP首部(1)

【HTTP】HTTP首部(1)

  • If-Modified-Since

【HTTP】HTTP首部(1)

它会告知服务器若If-Modified-Since字段值早于资源的更新时间,则希望能处理该请求。而在这个请求日期之后,如果请求的资源没有更新过,则返回状态码304的响应。

  • If-None-Match

【HTTP】HTTP首部(1)

 首部字段If-None-Match属于附带条件之一。它和If-Match作用相反,用于指定If-None-Match字段值的实体标记(ETag)值与请求资源的ETag不一致时,它就告知服务器处理该请求。

  • If-Range

【HTTP】HTTP首部(1)

【HTTP】HTTP首部(1)

  • If-Unmodified-Since

【HTTP】HTTP首部(1)

它与If-Modified-Since作用相反,它的作用是告知服务器,指定的请求资源只有在指定的日期之后,没有发生更新 的情况下,才能处理请求。

  • Proxy-Authorization

【HTTP】HTTP首部(1)

接收到从代理服务器发来的认证质询时,客户端 会发送包含首部字段Proxy-Authorization的请求,告知服务器认证所需要的信息。

  • Referer

【HTTP】HTTP首部(1)

  • User-Agent

【HTTP】HTTP首部(1) 首部字段User-Agent会将创建请求的浏览器和用户代理名称等信息传达到服务器。

5. 响应首部字段

【HTTP】HTTP首部(1)

  • Accept-Ranges

【HTTP】HTTP首部(1)

首部字段 Accept-Ranges是用来告知客户端服务器是否能处理范围请求,以指定获取服务器某个部分的资源。

可指定的字段值有两种,可处理请求范围时指定为bytes,反之则指定为none。

  • Age

【HTTP】HTTP首部(1)

Age:600

 首部字段Age能告知客户端,源服务器在多久之前创建响应。字段值的单位为秒。

  • ETag

【HTTP】HTTP首部(1)

首部字段ETag能告知客户端实体标识。它是一种可将资源以字符串形式做唯一标识的方式。服务器会为每份资源分配资源对应的ETag,而且当资源更新时,ETag也会更新。

  • Location

【HTTP】HTTP首部(1)

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

  • Server

【HTTP】HTTP首部(1)

  • Vary

【HTTP】HTTP首部(1)

Vary:Accept- Language

首部字段Vary可对缓存进行控制。源服务器会向代理服务器传达关于本地缓存使用的方法的命令。