图解http协议(四)(首部响应字段)

6.5 首部响应字段

服务端向客户端返回响应报文使用的字段,用于补充响应的附加信息、服务器信息,以及对客户端的附加要求等信息。

6.5.1 Accept-Ranges

图解http协议(四)(首部响应字段)_第1张图片

accept-ranges用于服务器告诉客户端它是否支持范围请求,取值2种,bytes和none,一个代表可以接受范围请求,一个代表不支持。

6.5.2 age

图解http协议(四)(首部响应字段)_第2张图片

Age: 600

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

若创建该响应的服务器是缓存服务器,Age 值是指缓存后的响应再次发起认证到认证完成的时间值。代理创

建响应时必须加上首部字段 Age

6.5.3 ETag

图解http协议(四)(首部响应字段)_第3张图片

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

另外,当资源更新时,ETag 值也需要更新。生成 ETag 值时,并没有统一的算法规则,而仅仅是由服务器来分配。

图解http协议(四)(首部响应字段)_第4张图片

资源被缓存时,就会被分配唯一性标识。例如,当使用中文版的浏览器访问 http://www.google.com/ 时,就会返回中文版对应的资源,而使用英文版的浏览器访问时,则会返回英文版对应的资源。两者的 URI 是相同的,所以仅凭 URI 指定缓存的资源是相当困难的。若在下载过程中出现连接中断、再连接的情况,都会依照ETag 值来指定资源。

ETag有强ETag和弱ETag之分,强ETag,无论资源发生如何细微的变化,都会变化其值。弱ETag,只有资源发生了根本变化时,才会改变ETag值,这时,会在字段值最开始处添加W/

ETag: W/"usagi-1234"

6.5.4 Location


图解http协议(四)(首部响应字段)_第5张图片

使用首部字段 Location 可以将响应接收方引导至某个与请求 URI 位置不同的资源。基本上,该字段会配合 3xx :Redirection 的响应,提供重定向的 URI

几乎所有的浏览器在接收到包含首部字段 Location 的响应后,都会强制性地尝试对已提示的重定向资源的访问。

6.5.5 Proxy-Authenticate

Proxy-Authenticate: Basic realm="Usagidesign Auth"

代理服务器把客户端需要的认证信息发送给客户端

它与客户端和服务器之间的 HTTP 访问认证的行为相似,不同之处在于其认证行为是在客户端与代理之间进行的。而客户端与服务器之间进行认证时,首部字段 WWW-Authorization 有着相同的作用。有关 HTTP 访问认证,后面的章节会再进行详尽阐述。

6.5.6 Retry-After

图解http协议(四)(首部响应字段)_第6张图片

Retry-After: 120

首部字段 Retry-After 告知客户端应该在多久之后再次发送请求。主要配合状态码 503 Service Unavailable响应,或 3xx Redirect 响应一起使用。

字段值可以指定为具体的日期时间(Wed, 04 Jul 2012 06:34:24 GMT 等格式),也可以是创建响应后的秒数。

6.5.7 server

图解http协议(四)(首部响应字段)_第7张图片

Server: Apache/2.2.17 (Unix)

服务器在告诉客户端,安装在服务器上的http服务器应用程序名称,还有可能包括版本号和安装时启用的可选项。

Server: Apache/2.2.6 (Unix) PHP/5.2.5

6.5.8 Vary

图解http协议(四)(首部响应字段)_第8张图片

如果代理服务器接收到了源服务器返回的vary字段,那么,相当于源服务器告诉代理服务器,如果客户端向你发送的请求头中,字段值和你发给我的请求头字段值相同,那么你就发送缓存给客户端,否则,你需要重新向我请求。

从代理服务器接收到源服务器返回包含 Vary 指定项的响应之后,若再要进行缓存,仅对请求中含有相同Vary 指定首部字段的请求返回缓存。即使对相同资源发起请求,但由于 Vary 指定的首部字段不相同,因此必须要从源服务器重新获取资源。

6.5.9 WWW-Authenticate

WWW-Authenticate: Basic realm="Usagidesign Auth"

服务器在告诉客户端,如果想要访问到指定的资源,需要按照我给你提供的方案进行, 它会告知客户端适用于访问请求 URI 所指定资源的认证方案(Basic 或是 Digest)和带参数提示的质询(challenge)。状态码 401 Unauthorized 响应中,肯定带有首部字段 WWW-Authenticate
6.6 实体首部字段

6.6.1  Allow

图解http协议(四)(首部响应字段)_第9张图片

首部字段 Allow 用于通知客户端能够支持 Request-URI 指定资源的所有 HTTP 方法。当服务器接收到不支持的 HTTP 方法时,会以状态码 405 Method Not Allowed 作为响应返回。与此同时,还会把所有能支持的HTTP 方法写入首部字段 Allow 后返回。

6.6.2 content-Encoding

Content-Encoding: gzip

首部字段 Content-Encoding 会告知客户端服务器对实体的主体部分选用的内容编码方式。内容编码是指在不丢失实体信息的前提下所进行的压缩。压缩方式如下:gzip、compress、deflate、identity

6.6.3 Content-Language

图解http协议(四)(首部响应字段)_第10张图片

Content-Language: zh-CN

服务器告诉客户端,这个资源的实体是中文的
6.6.4 Content-Length

图解http协议(四)(首部响应字段)_第11张图片

Content-Length: 15000

服务器告诉客户端实体部分的大小

6.6.5 Content-Location

Content-Location: http://www.hackr.jp/index-ja.html

首部字段 Content-Location 给出与报文主体部分相对应的 URI。和首部字段 Location 不同,Content-Location 表示的是报文主体返回资源对应的 URI比如,对于使用首部字段 Accept-Language 的服务器驱动型请求,当返回的页面内容与实际请求的对象不同时,首部字段 Content-Location 内会写明 URI。(访问 http://www.hackr.jp/ 返回的对象却是http://www.hackr.jp/index-ja.html 等类似情况)

6.6.6 Content-MD5

图解http协议(四)(首部响应字段)_第12张图片

Content-MD5: OGFkZDUwNGVhNGY3N2MxMDIwZmQ4NTBmY2IyTY==

首部字段 Content-MD5 是一串由 MD5 算法生成的值,其目的在于检查报文主体在传输过程中是否保持完整,以及确认传输到达。

 6.6.7 Content-Range

图解http协议(四)(首部响应字段)_第13张图片

针对范围请求,返回响应时使用的首部字段 Content-Range,能告知客户端作为响应返回的实体的哪个部分符合范围请求。字段值以字节为单位,表示当前发送部分及整个实体大小。

6.6.8 Content-Type

Content-Type: text/html; charset=UTF-8

服务器告诉客户端,实体主体的媒体类型。

6.6.9 Expires

图解http协议(四)(首部响应字段)_第14张图片

源服务器在跟缓存服务器说,这个资源你可以在2012-7-04 08:26:05之前使用,超过这个时间你就需要重新向我发送请求

首部字段 Expires 会将资源失效的日期告知客户端。缓存服务器在接收到含有首部字段 Expires 的响应后,会以缓存来应答请求,在 Expires 字段值指定的时间之前,响应的副本会一直被保存。当超过指定的时间后,缓存服务器在请求发送过来时,会转向源服务器请求资源。源服务器不希望缓存服务器对资源缓存时,最好在 Expires 字段内写入与首部字段 Date 相同的时间值。但是,当首部字段 Cache-Control 有指定 max-age 指令时,比起首部字段 Expires,会优先处理 max-age 令。

6.6.10 Last-Modified

图解http协议(四)(首部响应字段)_第15张图片

6.6.7 为cookie服务的首部字段
有2个与cookie相关的首部字段,set-cookie和cookie。

图解http协议(四)(首部响应字段)_第16张图片

图解http协议(四)(首部响应字段)_第17张图片

expires属性

指定浏览器可以发送cookie的有效期,如果省略cookie值的话,代表有效期为浏览器打开期间,如果浏览器应用程序被关闭,则cookie失效

path属性

限制可以发送cookie的文件目录

domain属性

通过 Cookie domain 属性指定的域名可做到与结尾匹配一致。比如,当指定 example.com 后,除example.com 以外,www.example.com www2.example.com 等都可以发送 Cookie。因此,除了针对具体指定的多个域名发送 Cookie 之 外,不指定 domain 属性显得更安全。

secure属性

只有在页面是https协议时,才允许浏览器发送cookie

发送 Cookie 时,指定 secure 属性的方法如下所示。

Set-Cookie: name=value; secure

httpOnly属性

使得js脚本无法获取cookie,其主要目的为防止跨站脚本攻击(Cross-site scripting,XSS)对 Cookie 的信息窃取。

Set-Cookie: name=value; HttpOnly

通过上述设置,通常从 Web 页面内还可以对 Cookie 进行读取操作。但使用 JavaScript document.cookie就无法读取附加 HttpOnly 属性后的 Cookie 的内容了。因此,也就无法在 XSS 中利用 JavaScript 劫持Cookie 了。

6.7.2 cookie

Cookie: status=enable

当客户端想要获得http状态管理支持时,就会发送这个字段给服务器。

6.8 其他首部字段

http首部字段是可以拓展的,以下是一些常用的非标准的首部字段

6.8.1 X-Frame-Options

X-Frame-Options: DENY

属于http响应首部,为了控制本资源在其他网站的frame里的显示问题,主要为了防止点击劫持攻击,取值为deny、sameorigin。

deny不允许其他任何网页使用、sameorigin只允许同源网页使用。

6.8.2 X-XSS-Protection

X-XSS-Protection: 1

属于http响应首部,为了防止 跨站脚本攻击(XSS),用于控制浏览器XSS防护机制的开关。取值有0和1,0代表将xss过滤设为无效状态、1表示设为开启状态

6.8.3 DNT

图解http协议(四)(首部响应字段)_第18张图片

DNT(do not track)属于http请求头字段,取值为0或者1,1代表拒绝追踪

6.8.4 P3P

P3P: CP="CAO DSP LAW CURa ADMa DEVa TAIa PSAa PSDa IVAa IVDa OUR BUS IND UNI COM NAV INT"

首部字段 P3P 属于 HTTP 相应首部,通过利用 P3P(The Platform for Privacy Preferences,在线隐私偏好平台)技术,可以让 Web 网站上的个人隐私变成一种仅供程序可理解的形式,以达到保护用户隐私的目的。





你可能感兴趣的:(网络基础)