第 1 章:Web基础技术( Header Field )

来源:互联网 发布:软件自学网站大全 编辑:程序博客网 时间:2024/06/07 02:02

第 1 章:Web基础技术作者:党海峰,孙霞    来源:希赛网    2014年03月14日

                                   Header Field

 

如前面所述,在HTTP请求消息和响应消息中都包含Header Field,这些头域用于说明一些辅助信息,以便于丰富客户机和服务器之间的通信。有些头域用于说明一些通用信息,称为General Header Field(通用头域),即可以用于请求消息也可以用于响应消息;有些头域只被用于请求消息,称为Request Header Field(请求头域);有些头域只被用于响应消息,称为Response Header Field(响应头域);有些头域用于说明传输内容的信息,它们可以被用于请求消息也可以被用于响应消息。整个头域由多条头域项组成,每条头域项占一行。头域项的一般格式为:

Field-Name: Field -Value

其中Field -Name是头域名,Field -Value是头域值。

1.General Header Field

这类头域既可以出现在请求消息中也可以出现在响应消息中,它们只描述了传递消息的一些属性,而不能用于描述传送文件的信息。常见的有如下几种。

Cache-Control:用于指定一种缓冲机制,这种缓冲机制在整个请求/响应过程中必须被遵守。该头域中指定的缓冲机制将覆盖默认的缓冲机制。例如:

Cache-Control: no-cache

Date:表示消息生成时的日期时间,该域所使用的日期格式必须符合HTTP日期格式,例如:

Date: Tue, 13 Nov 2007 08:12:31 GMT

Pragma:用于指定一些实现相关的参数,在HTTP协议中并没有规定该头域所携带参数的意义,例如:

Pragma: “string”

其中“string”表示一个由引号括起的字符串,各种对HTTP协议的不同实现(例如不同的浏览器和服务器)可以利用该头域定义用于传递特定信息的一系列字符串。

Transfer-Encoding:如果该头域被指定,那就说明消息体采用了所指定的传输类型进行传输。例如最常见的:

Transfer-Encoding: chunked

表示消息体采用分块传输的方式进行传输。

2.Request Header Field

这类头域只出现在请求消息中,它们通常被客户机用于向服务器传递一些客户机的信息或者请求消息的信息。常见的有如下几种。

Accept:可以被用来说明客户机浏览器能够接受的媒体格式,例如:

Accept: text/html, text/plain, image/*

表示客户机浏览器接受HTML和纯文本以及各种图片格式。

Accept-Charset:可以被用来说明客户机浏览器能够接受的字符编码方式,例如:

Accept-Charset: iso-8859-1, gb2312

表示客户机浏览器接受的字符编码格式有ISO—8859—1(也就是ASCII编码)和gb2312(一种简体中文编码)。

Accept-Encoding:可以被用来说明客户机浏览器能够接受的内容编码方法,通常用来指定内容的压缩方法,例如:

Accept-Encoding: gzip, identity

表示客户机浏览器接受gzip压缩方式和不压缩。

Accept-Language:可以被用来说明客户机浏览器能够接受的语言,例如:

Accept-Language: zh-CN

表示客户机浏览器接受简体中文。

From:表示提交该请求的终端用户的电子邮件,例如:

From: user@company.com

表示提交该请求的终端用户的电子邮件地址为user@company.com。

Host:指示Internet上的一个主机和端口号,主机通常是域名或者IP地址,例如:

Host: www.csai.cn

表示该请求访问的主机的域名为www.csai.cn。

If-Match:如果HTTP请求中含有该头域或者后面将要提到的If-ModifiedSince,If-None-Match,If-Range和If-Unmodified-Since头域时,那么该请求就变成了“条件请求”,即只有满足上述描述的条件时请求的操作才要被执行,这样可以减少不必要的资源浪费。该域的值是一个匹配字符串,如果该匹配字符串匹配成功则执行操作,否则不执行操作。在匹配字符串中*表示任意。例如:

If-Match: *

表示匹配任何资源。

If-None-Match:意义与If-Match恰好相反,表示匹配不成功则执行,否则不执行。

If-Modified-Since:值是一个日期,表示请求的资源如果从给定的日期后修改过则执行操作,否则不执行。例如

If-Modified-Since: Tue, 13 Nov 2007 08:12:31 GMT

表示:如果请求的文件在2007-11-13 08:12:31后被更改过,则执行操作。

If-Unmodified-Since:意义与If-Modified-Since恰好相反,表示:请求的资源如果从给定的日期后没有被修改过则执行操作,否则不执行。

If-Range:假如客户机的缓冲池中已有了资源实体的一部分,而期望获得剩余部分,则客户机的请求可以使用该头域。它表示:“如果指定的资源实体没有被更改则将缺少的发给我,否则发给我整个资源实体”。

Max-Forwards:在TRACE和OPTIONS方法中使用,用于限制消息在网络中传播的跳数,即消息被代理或者网关转发的次数,以此来限制消息的生命期。

Range:用于指定一个范围,它表示请求的资源实体的范围,可以使用字节数指定。If-Range需要的范围就是通过该头域指定的。

Referer:客户机用该域告诉服务器,请求中的Request-URI是如何获得的。例如

Referer: http://www.csai.cn/index.htm

表示当前请求资源的URI是从页面http://www.csai.cn/index.htm中获得的。

User-Agent:可以被用来说明客户机浏览器的型号,例如

Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)

表示客户机是使用Mozilla/4.0兼容浏览器、IE6.0等。

3.Response Header Field

这类头域只出现在响应消息中,它们通常被服务器用于向客户机传递一些服务器的信息或者响应消息的信息。常见的有以下几类。

Accept-Ranges:服务器用于指示它所接受的Range类型,比如

Accept-Ranges: bytes

表示服务器接受以byte形式指示的Range。

Accept-Ranges: none

表示服务器不接受任何形式的Range。

Age:顾名思义,在响应消息中该头域表示响应消息的“年龄”,也就是服务器估计的该响应消息产生后的时间长度。

Location:当响应消息的响应码为3xx时,该头域会被响应消息用于指示重定向后新的URL。

Retry-After:通常用于响应码为503的响应消息,503响应消息表示服务器当前不可用,该头域估计了一个服务器不可用的时间。头域值可以是一个HTTP日期或者是一个数字。例如:

Retry-After: Tue, 13 Nov 2007 08:12:31 GMT

表示服务器在2007-11-13 08:12:31之前不可用,请在该时间以后重试。

Retry-After: 120

表示服务器当前不可用,请在120秒后重试。

Server:表示运行在服务器上用于处理请求的软件的信息。

4.Entity Header Field

该类头域描述了消息体中携带的数据的元数据(即对数据的长度、类型、修改时间等属性的描述信息),请求消息和响应消息中都可以包含这类头域。常见的有以下几类。

Allow:表示Request-URI指定的资源实体所支持的HTTP方法列表,在响应码为405的响应消息中必须包含该头域。例如:

Allow: GET, HEAD, PUT

表示Request-URI指定的资源实体仅支持GET、HEAD和PUT三种HTTP方法。

Content-Encoding:指示消息内容的编码方法,通常指示内容的压缩算法。例如:

Content-Encoding: gzip

表示消息中数据采用gzip算法编码。

Content-Language:表示消息内容所采用的自然语言。例如:

Content-Language: en

表示消息体中数据表示的内容是英文的。

Content-Length:表示消息长度。头域值是十进制数,表示字节数。例如:

Content-Length: 2353

表示消息体中数据的长度为2353字节。

Content-Location:表示除了Request-URI指定的位置外,其他可以访问到消息内容的位置。

Content-MD5:表示消息体中数据的MD5校验码,用来实现端到端的消息完整性检查。

Content-Range:当传递的数据是整个资源实体的一部分时,用该域说明当前传递的数据是资源实体的哪一部分。例如:

Content-Range: 0-500/1023

表示资源实体总共范围为0-1023,而当前传递的是0-500。

Content-Type:指示消息体中内容的媒体格式。例如:

Content-Type: text/html; charset=iso-8859-1

表示消息体中携带的内容是HTML文档,它的媒体格式是text大类中的HTML子类,文档的字符编码是ISO—8859—1;

Expires:指定了一个日期,表示消息体中的内容在该日期之前有效,过了该日期则消息内容就过时了。

Last-Modified:表示消息中携带的内容实体的最后修改时间。

0 0
原创粉丝点击