HTTP 请求和 HTTP 响应都使用头发送有关 HTTP 消息的信息。头由一系列行组成,每行都包含名称,然后依次是冒号、空格、值。字段可按任何顺序排列。某些头字段既能用于请求头也能用于响应头,而另一些头字段只能用于其中之一。
许多请求头字段都允许客户端在值部分指定多个可接受的选项,有时甚至可以对这些选项的首选项进行排名。多个项以逗号分隔。例如,客户端可以发送包含“Content-Encoding: gzip, compress,”的请求头,表示可以接受各种压缩类型。如果服务器的响应正文使用 gzip 编码,其响应头中将包含“Content-Encoding: gzip”。
有些字段可以在单个头中出现多次。例如,头可以有多个“Warning”字段。
下表列出了 HTTP 1.1 头字段。注意:有些头字段是 MIME 字段。MIME 字段在 Internet Engineering Task Force (IETF) 文档 RFC 2045 中进行了定义,但也可用于 HTTP 1.1 协议。有关 MIME 和 HTTP 1.1 规范的详细信息,请参阅 IEIF 页。
一般头字段
一般头字段可用于请求消息和响应消息。
Cache-Control | "max-age=10" |
Connection | "close" |
Date | "Tue, 11 Jul 2000 18:23:51 GMT" |
Pragma | "no-cache" |
Trailer | "Date" |
Transfer-Encoding | "chunked" |
Upgrade | "SHTTP/1.3" |
Via | "HTTP/1.1 Proxy1, HTTP/1.1 Proxy2" |
Warning | "112 Disconnected Operation" |
请求头字段
请求头字段仅用于请求消息。
Accept | "text/html, image/*" |
Accept-Charset | "iso8859-5" |
Accept-Encoding | "gzip, compress" |
Accept-Language | "en, fr" |
Authorization | [credentials] |
Content-Encoding | "gzip" |
Expect | "100-continue" |
From | "user@microsoft.com" |
Host | "www.microsoft.com" |
If-Match | "entity_tag001" |
If-Modified-Since | "Tue, 11 Jul 2000 18:23:51 GMT" |
If-None-Match | "entity_tag001" |
If-Range | "entity_tag001" or "Tue, 11 Jul 2000 18:23:51 GMT" |
If-Unmodified-Since | "Tue, 11 Jul 2000 18:23:51 GMT" |
Max-Forwards | "3" |
Proxy-Authorization | [credentials] |
Range | "bytes=100-599" |
Referer | "http://www.microsoft.com/resources.asp" |
TE | "trailers" |
User-Agent | "Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)" |
响应头字段
响应头字段仅用于响应消息。
Accept-Ranges | "none" |
Age | "2147483648(2^31)" |
ETag | "b38b9-17dd-367c5dcd" |
Last-Modified | "Tue, 11 Jul 2000 18:23:51 GMT" |
Location | "http://localhost/redirecttarget.asp" |
Proxy-Authenticate | [challenge] |
Retry-After | "Tue, 11 Jul 2000 18:23:51 GMT" or "60" |
Server | "Microsoft-IIS/5.0" |
Vary | "Date" |
WWW-Authenticate | [challenge] |
实体头字段
实体头字段可以用于请求消息或响应消息。实体头字段中包含消息实体正文的有关信息,如使用的编码格式。
Allow | "GET, HEAD" |
Content-Encoding | "gzip" |
Content-Language | "en" |
Content-Length | "8445" |
Content-Location | "http://localhost/page.asp" |
Content-MD5 | [md5-digest] |
Content-Range | "bytes 2543-4532/7898" |
Content-Type | "text/html" |
Expires | "Tue, 11 Jul 2000 18:23:51 GMT" |
Last-Modified | "Tue, 11 Jul 2000 18:23:51 GMT" |
请求头示例
以下是 HTTP 请求的简单示例。
GET /articles/news/today.asp HTTP/1.1
Accept: */*
Accept-Language: en-us
Connection: Keep-Alive
Host: localhost
Referer: http://localhost/links.asp
User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)
Accept-Encoding: gzip, deflate
该请求具有请求行,其中包括方法 (GET)、资源路径 (/articles/news/today.asp) 和 HTTP 版本 (HTTP/1.1)。由于该请求没有正文,故所有请求行后面的内容都是头的一部分。紧接着头之后是一个空行,表示头已结束。
响应头示例
Web 服务器可以通过多种方式响应前一个请求。假设文件是可以访问的,并且用户具有查看该文件的权限,则响应类似于:
HTTP/1.1 200 OK
Server: Microsoft-IIS/5.0
Date: Thu, 13 Jul 2000 05:46:53 GMT
Content-Length: 2291
Content-Type: text/html
Set-Cookie: ASPSESSIONIDQQGGGNCG=LKLDFFKCINFLDMFHCBCBMFLJ; path=/
Cache-control: private
<HTML>
<BODY>
...
响应的第一行称为状态行。它包含响应所用的 HTTP 版本、状态编码 (200) 和原因短语。示例中包含一个头,其中具有五个字段,接着是一个空行(回车和换行符),然后是响应正文的头两行。