??xml version="1.0" encoding="utf-8" standalone="yes"?> HTTP消息报头包括普通报头、请求报头、响应报头、实体报头?br />
每一个报头域都是?span style="font-size: 12pt; font-family: 隶书">名字+“Q?#8221;+I格+?l成Q消息报头域的名字是大小写无关的?/font> 1、普通报?br />
在普通报头中Q有数报头域用于所有的h和响应消息,但ƈ不用于被传输的实体,只用于传输的消息?br />
egQ?br />
Cache-Control 用于指定~存指oQ缓存指令是单向的(响应中出现的~存指o在请求中未必会出玎ͼQ且?br />
独立的(一个消息的~存指o不会影响另一个消息处理的~存机制Q,HTTP1.0使用的类似的报头域ؓPragma?br />
h时的~存指o包括Qno-cacheQ用于指C求或响应消息不能~存Q、no-store、max-age、max-stale、min- Connection普通报头域允许发送指定连接的选项。例如指定连接是q箋Q或者指?#8220;close”选项Q通知服务 2、请求报?br />
h报头允许客户端向服务器端传递请求的附加信息以及客户端自w的信息?br />
常用的请求报?br />
Accept 3、响应报?br />
响应报头允许服务器传递不能放在状态行中的附加响应信息Q以及关于服务器的信息和对Request-URI所标识
HTTP消息由客L(fng)到服务器的请求和服务器到客户端的响应l成。请求消息和响应消息都是?span style="font-size: 12pt; font-family: 隶书">开始行Q对
于请求消息,开始行是h行,对于响应消息Q开始行是状态行Q,消息报头Q可选)Q?span style="font-size: 12pt; font-family: 隶书">IQ只?br />
CRLF的行Q,消息正文Q可选)l成?br />
Ҏ(gu)息报头的阐述Q?br />
fresh、only-if-cached;
响应时的~存指o包括Qpublic、private、no-cache、no-store、no-transform、must-revalidate、proxy-revalidate?br />
max-age、s-maxage.
egQؓ了指CIE览器(客户端)不要~存面Q服务器端的JSPE序可以~写如下Qresponse.sehHeader
("Cache-Control","no-cache");
//response.setHeader("Pragma","no-cache");作用相当于上qC码,通常两?/合用
q句代码在发送的响应消息中设|普通报头域QCache-Control:no-cache
Date普通报头域表示消息产生的日期和旉
器,在响应完成后Q关闭连?br />
Accepth报头域用于指定客L(fng)接受哪些cd的信息。egQAcceptQimage/gifQ表明客L(fng)希望接受GIF图象
格式的资源;AcceptQtext/htmlQ表明客L(fng)希望接受html文本?br />
Accept-Charset
Accept-Charseth报头域用于指定客L(fng)接受的字W集。egQAccept-Charset:iso-8859-1,gb2312.如果在请求消
息中没有讄q个域,~省是Q何字W集都可以接受?br />
Accept-Encoding
Accept-Encodingh报头域类gAcceptQ但是它是用于指定可接受的内容编码。egQAccept-Encoding:gzip.deflate.如果h消息中没有设|这个域服务器假定客L(fng)对各U内容编码都可以接受?br />
Accept-Language
Accept-Languageh报头域类gAcceptQ但是它是用于指定一U自然语a。egQAccept-Language:zh-cn.如果?br />
求消息中没有讄q个报头域,服务器假定客L(fng)对各U语a都可以接受?br />
Authorization
Authorizationh报头域主要用于证明客L(fng)有权查看某个资源。当览器访问一个页面时Q如果收到服务器
的响应代码ؓ401Q未授权Q,可以发送一个包含Authorizationh报头域的hQ要求服务器对其q行验证?br />
HostQ发送请求时Q该报头域是必需的)
Hosth报头域主要用于指定被h资源的InternetL和端口号Q它通常从HTTP URL中提取出来的QegQ?br />
我们在浏览器中输入:http://www.guet.edu.cn/index.html
览器发送的h消息中,׃包含Hosth报头域,如下Q?br />
HostQ?/font>www.guet.edu.cn
此处使用~省端口?0Q若指定了端口号Q则变成QHostQ?/font>www.guet.edu.cn:指定端口?br />
User-Agent
我们上网登陆论坛的时候,往往会看C些欢q信息,其中列出了你的操作系l的名称和版本,你所使用?br />
览器的名称和版本,q往往让很多h感到很神奇,实际上,服务器应用程序就是从User-Agentq个h报头
域中获取到这些信息。User-Agenth报头域允许客L(fng)它的操作系l、浏览器和其它属性告诉服务器。不
q,q个报头域不是必需的,如果我们自己~写一个浏览器Q不使用User-Agenth报头域,那么服务器端?br />
无法得知我们的信息了?br />
h报头举例Q?br />
GET /form.html HTTP/1.1 (CRLF)
Accept:image/gif,image/x-xbitmap,image/jpeg,application/x-shockwave-flash,application/vnd.ms-excel,application/vnd.ms-
powerpoint,application/msword,*/* (CRLF)
Accept-Language:zh-cn (CRLF)
Accept-Encoding:gzip,deflate (CRLF)
If-Modified-Since:Wed,05 Jan 2007 11:21:25 GMT (CRLF)
If-None-Match:W/"80b1a4c018f3c41:8317" (CRLF)
User-Agent:Mozilla/4.0(compatible;MSIE6.0;Windows NT 5.0) (CRLF)
Host:www.guet.edu.cn (CRLF)
Connection:Keep-Alive (CRLF)
(CRLF)
的资源进行下一步访问的信息?br />
常用的响应报?br />
Location
Location响应报头域用于重定向接受者到一个新的位|。Location响应报头域常用在更换域名的时候?br />
Server
Server响应报头域包含了服务器用来处理请求的软g信息。与User-Agenth报头域是相对应的。下面是
Server响应报头域的一个例子:
ServerQApache-Coyote/1.1
WWW-Authenticate
WWW-Authenticate响应报头域必被包含?01Q未授权的)响应消息中,客户端收?01响应消息时候,q发
送Authorization报头域请求服务器对其q行验证Ӟ服务端响应报头就包含该报头域?br />
egQWWW-Authenticate:Basic realm="Basic Auth Test!" //可以看出服务器对h资源采用的是基本验证机制?/font>
4、实体报?br />
h和响应消息都可以传送一个实体。一个实体由实体报头域和实体正文l成Q但q不是说实体报头域和实体正文要在一起发送,可以只发送实体报头域。实体报头定义了关于实体正文QegQ有无实体正文)和请求所标识的资源的元信息?br />
常用的实体报?br />
Content-Encoding
Content-Encoding实体报头域被用作媒体cd的修饰符Q它的值指CZ已经被应用到实体正文的附加内容的~?br />
码,因而要获得Content-Type报头域中所引用的媒体类型,必须采用相应的解码机制。Content-Encodingq样?br />
于记录文档的压羃Ҏ(gu)QegQContent-EncodingQgzip
Content-Language
Content-Language实体报头域描qC资源所用的自然语言。没有设|该域则认ؓ实体内容提供给所有的语言
阅读
者。egQContent-Language:da
Content-Length
Content-Length实体报头域用于指明实体正文的长度Q以字节方式存储的十q制数字来表C?br />
Content-Type
Content-Type实体报头域用语指明发送给接收者的实体正文的媒体类型。egQ?br />
Content-Type:text/html;charset=ISO-8859-1
Content-Type:text/html;charset=GB2312
Last-Modified
Last-Modified实体报头域用于指C源的最后修Ҏ(gu)期和旉?br />
Expires
Expires实体报头域给出响应过期的日期和时间。ؓ了让代理服务器或览器在一D|间以后更新缓存中(再次
讉K曾访问过的页面时Q直接从~存中加载,~短响应旉和降低服务器负蝲)的页面,我们可以使用Expires
实体报头域指定页面过期的旉。egQExpiresQThuQ?5 Sep 2006 16:23:12 GMT
HTTP1.1的客L(fng)和缓存必d其他非法的日期格式(包括0Q看作已l过期。egQؓ了让览器不要缓存页
面,我们也可以利用Expires实体报头域,讄?Qjsp中程序如下:response.setDateHeader("Expires","0");
]]>
httph׃部分l成Q分别是Q请求行、消息报头、请求正?br />
但由于消息报头和h正文之间有一?CRLF"
所以我自己定义为四部分
?
h?br />
消息报头
CRLF
正文
h行阐qͼ
1、请求行以一个方法符号开_以空格分开Q后面跟着h的URI和协议的版本Q格式如下:Method Request-
URI HTTP-Version CRLF
其中 Method表示hҎ(gu)QRequest-URI是一个统一资源标识W;HTTP-Version表示h的HTTP协议版本Q?br />
CRLF表示回R和换行(除了作ؓl尾的CRLF外,不允许出现单独的CR或LF字符Q?br />
hҎ(gu)Q所有方法全为大写)有多U,各个Ҏ(gu)的解释如下:
GET h获取Request-URI所标识的资?br />
POST 在Request-URI所标识的资源后附加新的数据
HEAD h获取由Request-URI所标识的资源的响应消息报头
PUT h服务器存储一个资源,q用Request-URI作ؓ其标?br />
DELETE h服务器删除Request-URI所标识的资?br />
TRACE h服务器回送收到的h信息Q主要用于测试或诊断
CONNECT 保留来使用
OPTIONS h查询服务器的性能Q或者查询与资源相关的选项和需?br />
应用举例Q?br />
GETҎ(gu)Q在览器的地址栏中输入|址的方式访问网|Q浏览器采用GETҎ(gu)向服务器获取资源Q?br />
eg:GET /form.html HTTP/1.1 (CRLF)
POSTҎ(gu)要求被请求服务器接受附在h后面的数据,常用于提交表单?br />
egQPOST /reg.jsp HTTP/ (CRLF)
Accept:image/gif,image/x-xbit,... (CRLF)
...
HOST:www.guet.edu.cn (CRLF)
Content-Length:22 (CRLF)
Connection:Keep-Alive (CRLF)
Cache-Control:no-cache (CRLF)
(CRLF) //该CRLF表示消息报头已经l束Q在此之前ؓ消息报头
user=jeffrey&pwd=1234 //此行以下为提交的数据
HEADҎ(gu)与GETҎ(gu)几乎是一L(fng)Q对于HEADh的回应部分来_它的HTTP头部中包含的信息与通过
GETh所得到的信息是相同的。利用这个方法,不必传输整个资源内容Q就可以得到Request-URI所标识的资
源的信息。该Ҏ(gu)常用于测试超链接的有效性,是否可以讉KQ以及最q是否更新?/span>