Http头信息(三)——响应头信息(一)

前言

前面向大家介绍了

从本章开始,向大家介绍响应头信息。响应头信息,顾名思义,就是在服务器返回给客户端的响应中使用的头信息。本篇文章将会介绍:

  • Acctpt-Ranges
  • Age
  • ETag
  • Location
  • Proxy-Authenticate
  • Retry-After
  • Server
  • Vary
  • WWW-Authenticate

话不多说,开始.

1. Accept-Ranges

该响应头表明:服务器是否可以处理范围请求。

什么是范围请求?
即只请求一部分资源。例如请求头信息中的Range

其有两个取值:nonebytes

<!--支持范围请求,单位是 bytes (字节)-->
Accept-Ranges: bytes
<!--不支持任何范围请求单位,由于其等同于没有返回此头部,因此很少使用。不过一些浏览器,比如IE9,会依据该头部去禁用或者移除下载管理器的暂停按钮-->
Accept-Ranges: none

我可以指定别的单位吗,比如KB?
如果你的服务器只给自家客户端用,那么随意,如果公开给其他不受你控制的客户端用,那么建议还是采用bytes单位吧

2. Age

<!--单位:秒-->
Age:60

告知客户端:这个响应被创建了多长时间。该字段一般用于缓存服务器。因为在HTTP 1.1版本中,客户端无法得知响应是否来自缓存。有了这个字段,客户端就可以判断。比如:Age:84600,那么客户端就可以判断这个响应来自缓存服务器,因为源服务器创建缓存然后发送给客户端不可能用了一天的时间。

如果响应来自缓存服务器,则缓存服务器返回响应时必须带上这个字段。

3. ETag

语法

<!--弱比较-->
ETag: W/"<etag_value>"
<!--强比较-->
ETag: "<etag_value>"

告知客户端,当前资源的实体标示符(etage_value)。服务器会给每份资源都分配对用的ETag值,当资源更新时,其对用的ETag值也会更新。具体的值由服务器指定,只要能唯一标示一个资源和其对应的版本就行。
什么是弱比较和强比较?。可以参考:If-Match

4. Location

Location: <url>

该首部指定重定向的地址。需要配合3xx 重定向才有意义。
除了重定向响应之外, 状态码为201 (Created)的消息也会带有Location首部。它指向的是新创建的资源的地址。

5. Proxy-Authenticate

该字段指定了获取代理服务器上资源的验证方式
语法:

Proxy-Authenticate: <type> realm=<realm>
Proxy-Authenticate: Basic realm="Access to the internal site"
  • <type>:身份验证类型。可以查看:Authorization获得关于type的描述。
  • realm=<realm>:可省略。对于被保护区域(即安全域)的描述。如果没有指定安全域,客户端通常用一个格式化的主机名来代替。

其要与 407 Proxy Authentication Required一起使用。很好理解:407响应告诉客户端需要验证。该头信息告诉客户端采用哪种验证方式。

6. Retry-After

该首部告诉客户端,你的请求我收到了,但是现在不能处理,请你在经过xxx秒或者在xxx时间后重新发送。通常配合状态码503 Service Unavailable3xx 重定向一起使用。
绝对时间的格式,可以参考:Date

<!--语法-->
Retry-After: <http-date>
Retry-After: <delay-seconds>
<!--实例-->
Retry-After: Wed, 21 Oct 2015 07:28:00 GMT <!--在这个时间之后再次请求-->
Retry-After: 120 <!--120秒之后再次请求-->

7. Server

该字段告诉客户端当前服务器上安装的HTTP服务器应运用程序的信息。不单单会标出服务器上软件应用的名称,还有可能包括版本号和安装时启用的可选项等。如:

Server: Apache/2.4.1 (Unix)

8. Vary

<!--语法-->
Vary: *
Vary: <header-name>, <header-name>, ...
  • *:任意头信息。此时一般表示不缓存,可以这么理解,要求所有的头信息的值都与上一次请求一样(有这些头信息,并且值一样),有点难。
  • header-name:请求/通用头信息
    在决定是否使用缓存,使用哪一个缓存时,Vary起到了关键作用。
    缓存服务器在决定是否使用缓存时,出了比较URLETag等信息,还会使用响应中的Vary信息。只有Vary后面指定的头信息的值和请求/通用头信息中对应头信息的值相同时才会使用这个缓存。比如:
    第一次请求头信息:
GET /Index.html HTTP/1.1
...
User-Agent:PC
...

响应头信息

200 OK
...
Vary:User-Agent
...

这里其实有个附件信息,就是User-Agent:PC,为什么是PC?因为与这个响应对用的请求的User-Agent的值是PC
第二次请求:

GET /Index.html HTTP/1.1
...
User-Agent:Android
...

就不会命中第一次请求的缓存,因为第一次请求的缓存响应指定了Vary:User-Agent。附加信息User-Agent:PC。这时缓存服务器发现第二次请求的User-Agent的值跟第一次不一样,所以认为当前这个缓存不是第二次请求想要的,就会去服务器请求数据。

9. WWW-Authenticate

<!--语法-->
WWW-Authenticate: <type> realm=<realm>

其用法与Proxy-Authenticate相同。区别是:Proxy-Authenticate用于代理服务器验证。WWW-Authenticate用于最终的服务器验证。
其通常与 401 Unauthorized一起使用

本节到此结束,下节介绍剩余的10个响应头信息,欢迎关注,获取最新的更新

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值