posts - 2,  comments - 4,  trackbacks - 0
          對(duì)http的闡述:
          HTTP消息由客戶端到服務(wù)器的請(qǐng)求和服務(wù)器到客戶端的響應(yīng)組成。請(qǐng)求消息和響應(yīng)消息都是由開始行(對(duì)
          于請(qǐng)求消息,開始行就是請(qǐng)求行,對(duì)于響應(yīng)消息,開始行就是狀態(tài)行),消息報(bào)頭(可選),空行(只有
          CRLF的行),消息正文(可選)組成。


          對(duì)消息報(bào)頭的闡述:

          HTTP消息報(bào)頭包括普通報(bào)頭、請(qǐng)求報(bào)頭、響應(yīng)報(bào)頭、實(shí)體報(bào)頭。
          每一個(gè)報(bào)頭域都是由名字+“:”+空格+值 組成,消息報(bào)頭域的名字是大小寫無關(guān)的。

          1、普通報(bào)頭
          在普通報(bào)頭中,有少數(shù)報(bào)頭域用于所有的請(qǐng)求和響應(yīng)消息,但并不用于被傳輸?shù)膶?shí)體,只用于傳輸?shù)南ⅰ?br /> eg:
          Cache-Control   用于指定緩存指令,緩存指令是單向的(響應(yīng)中出現(xiàn)的緩存指令在請(qǐng)求中未必會(huì)出現(xiàn)),且是
          獨(dú)立的(一個(gè)消息的緩存指令不會(huì)影響另一個(gè)消息處理的緩存機(jī)制),HTTP1.0使用的類似的報(bào)頭域?yàn)镻ragma。
          請(qǐng)求時(shí)的緩存指令包括:no-cache(用于指示請(qǐng)求或響應(yīng)消息不能緩存)、no-store、max-age、max-stale、min-
          fresh、only-if-cached;
          響應(yīng)時(shí)的緩存指令包括:public、private、no-cache、no-store、no-transform、must-revalidate、proxy-revalidate、
          max-age、s-maxage.
          eg:為了指示IE瀏覽器(客戶端)不要緩存頁(yè)面,服務(wù)器端的JSP程序可以編寫如下:response.sehHeader
          ("Cache-Control","no-cache");
          //response.setHeader("Pragma","no-cache");作用相當(dāng)于上述代碼,通常兩者//合用
          這句代碼將在發(fā)送的響應(yīng)消息中設(shè)置普通報(bào)頭域:Cache-Control:no-cache


          Date普通報(bào)頭域表示消息產(chǎn)生的日期和時(shí)間

          Connection普通報(bào)頭域允許發(fā)送指定連接的選項(xiàng)。例如指定連接是連續(xù),或者指定“close”選項(xiàng),通知服務(wù)
          器,在響應(yīng)完成后,關(guān)閉連接

          2、請(qǐng)求報(bào)頭
          請(qǐng)求報(bào)頭允許客戶端向服務(wù)器端傳遞請(qǐng)求的附加信息以及客戶端自身的信息。
          常用的請(qǐng)求報(bào)頭
          Accept
          Accept請(qǐng)求報(bào)頭域用于指定客戶端接受哪些類型的信息。eg:Accept:image/gif,表明客戶端希望接受GIF圖象
          格式的資源;Accept:text/html,表明客戶端希望接受html文本。
          Accept-Charset
          Accept-Charset請(qǐng)求報(bào)頭域用于指定客戶端接受的字符集。eg:Accept-Charset:iso-8859-1,gb2312.如果在請(qǐng)求消
          息中沒有設(shè)置這個(gè)域,缺省是任何字符集都可以接受。
          Accept-Encoding
          Accept-Encoding請(qǐng)求報(bào)頭域類似于Accept,但是它是用于指定可接受的內(nèi)容編碼。eg:Accept-Encoding:gzip.deflate.如果請(qǐng)求消息中沒有設(shè)置這個(gè)域服務(wù)器假定客戶端對(duì)各種內(nèi)容編碼都可以接受。
          Accept-Language
          Accept-Language請(qǐng)求報(bào)頭域類似于Accept,但是它是用于指定一種自然語言。eg:Accept-Language:zh-cn.如果請(qǐng)
          求消息中沒有設(shè)置這個(gè)報(bào)頭域,服務(wù)器假定客戶端對(duì)各種語言都可以接受。
          Authorization
          Authorization請(qǐng)求報(bào)頭域主要用于證明客戶端有權(quán)查看某個(gè)資源。當(dāng)瀏覽器訪問一個(gè)頁(yè)面時(shí),如果收到服務(wù)器
          的響應(yīng)代碼為401(未授權(quán)),可以發(fā)送一個(gè)包含Authorization請(qǐng)求報(bào)頭域的請(qǐng)求,要求服務(wù)器對(duì)其進(jìn)行驗(yàn)證。
          Host(發(fā)送請(qǐng)求時(shí),該報(bào)頭域是必需的)
          Host請(qǐng)求報(bào)頭域主要用于指定被請(qǐng)求資源的Internet主機(jī)和端口號(hào),它通常從HTTP URL中提取出來的,eg:
          我們?cè)跒g覽器中輸入:
          http://www.guet.edu.cn/index.html
          瀏覽器發(fā)送的請(qǐng)求消息中,就會(huì)包含Host請(qǐng)求報(bào)頭域,如下:
          Host:
          www.guet.edu.cn
          此處使用缺省端口號(hào)80,若指定了端口號(hào),則變成:Host:www.guet.edu.cn:指定端口號(hào)
          User-Agent
          我們上網(wǎng)登陸論壇的時(shí)候,往往會(huì)看到一些歡迎信息,其中列出了你的操作系統(tǒng)的名稱和版本,你所使用的
          瀏覽器的名稱和版本,這往往讓很多人感到很神奇,實(shí)際上,服務(wù)器應(yīng)用程序就是從User-Agent這個(gè)請(qǐng)求報(bào)頭
          域中獲取到這些信息。User-Agent請(qǐng)求報(bào)頭域允許客戶端將它的操作系統(tǒng)、瀏覽器和其它屬性告訴服務(wù)器。不
          過,這個(gè)報(bào)頭域不是必需的,如果我們自己編寫一個(gè)瀏覽器,不使用User-Agent請(qǐng)求報(bào)頭域,那么服務(wù)器端就
          無法得知我們的信息了。
          請(qǐng)求報(bào)頭舉例:
          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)

          3、響應(yīng)報(bào)頭
          響應(yīng)報(bào)頭允許服務(wù)器傳遞不能放在狀態(tài)行中的附加響應(yīng)信息,以及關(guān)于服務(wù)器的信息和對(duì)Request-URI所標(biāo)識(shí)
          的資源進(jìn)行下一步訪問的信息。
          常用的響應(yīng)報(bào)頭
          Location
          Location響應(yīng)報(bào)頭域用于重定向接受者到一個(gè)新的位置。Location響應(yīng)報(bào)頭域常用在更換域名的時(shí)候。
          Server
          Server響應(yīng)報(bào)頭域包含了服務(wù)器用來處理請(qǐng)求的軟件信息。與User-Agent請(qǐng)求報(bào)頭域是相對(duì)應(yīng)的。下面是
          Server響應(yīng)報(bào)頭域的一個(gè)例子:
          Server:Apache-Coyote/1.1
          WWW-Authenticate
          WWW-Authenticate響應(yīng)報(bào)頭域必須被包含在401(未授權(quán)的)響應(yīng)消息中,客戶端收到401響應(yīng)消息時(shí)候,并發(fā)
          送Authorization報(bào)頭域請(qǐng)求服務(wù)器對(duì)其進(jìn)行驗(yàn)證時(shí),服務(wù)端響應(yīng)報(bào)頭就包含該報(bào)頭域。
          eg:WWW-Authenticate:Basic realm="Basic Auth Test!"  //可以看出服務(wù)器對(duì)請(qǐng)求資源采用的是基本驗(yàn)證機(jī)制。


          4、實(shí)體報(bào)頭
          請(qǐng)求和響應(yīng)消息都可以傳送一個(gè)實(shí)體。一個(gè)實(shí)體由實(shí)體報(bào)頭域和實(shí)體正文組成,但并不是說實(shí)體報(bào)頭域和實(shí)體正文要在一起發(fā)送,可以只發(fā)送實(shí)體報(bào)頭域。實(shí)體報(bào)頭定義了關(guān)于實(shí)體正文(eg:有無實(shí)體正文)和請(qǐng)求所標(biāo)識(shí)的資源的元信息。
          常用的實(shí)體報(bào)頭
          Content-Encoding
          Content-Encoding實(shí)體報(bào)頭域被用作媒體類型的修飾符,它的值指示了已經(jīng)被應(yīng)用到實(shí)體正文的附加內(nèi)容的編
          碼,因而要獲得Content-Type報(bào)頭域中所引用的媒體類型,必須采用相應(yīng)的解碼機(jī)制。Content-Encoding這樣用
          于記錄文檔的壓縮方法,eg:Content-Encoding:gzip
          Content-Language
          Content-Language實(shí)體報(bào)頭域描述了資源所用的自然語言。沒有設(shè)置該域則認(rèn)為實(shí)體內(nèi)容將提供給所有的語言
          閱讀
          者。eg:Content-Language:da
          Content-Length
          Content-Length實(shí)體報(bào)頭域用于指明實(shí)體正文的長(zhǎng)度,以字節(jié)方式存儲(chǔ)的十進(jìn)制數(shù)字來表示。
          Content-Type
          Content-Type實(shí)體報(bào)頭域用語指明發(fā)送給接收者的實(shí)體正文的媒體類型。eg:
          Content-Type:text/html;charset=ISO-8859-1
          Content-Type:text/html;charset=GB2312
          Last-Modified
          Last-Modified實(shí)體報(bào)頭域用于指示資源的最后修改日期和時(shí)間。
          Expires
          Expires實(shí)體報(bào)頭域給出響應(yīng)過期的日期和時(shí)間。為了讓代理服務(wù)器或?yàn)g覽器在一段時(shí)間以后更新緩存中(再次
          訪問曾訪問過的頁(yè)面時(shí),直接從緩存中加載,縮短響應(yīng)時(shí)間和降低服務(wù)器負(fù)載)的頁(yè)面,我們可以使用Expires
          實(shí)體報(bào)頭域指定頁(yè)面過期的時(shí)間。eg:Expires:Thu,15 Sep 2006 16:23:12 GMT
          HTTP1.1的客戶端和緩存必須將其他非法的日期格式(包括0)看作已經(jīng)過期。eg:為了讓瀏覽器不要緩存頁(yè)
          面,我們也可以利用Expires實(shí)體報(bào)頭域,設(shè)置為0,jsp中程序如下:response.setDateHeader("Expires","0");

          posted on 2009-07-21 10:32 自己的平淡 閱讀(1390) 評(píng)論(0)  編輯  收藏 所屬分類: 代碼結(jié)構(gòu)

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          <2025年7月>
          293012345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          常用鏈接

          留言簿(1)

          隨筆檔案

          文章分類

          文章檔案

          搜索

          •  

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 栾城县| 阜新市| 紫金县| 涞源县| 大连市| 镇远县| 铜陵市| 阳曲县| 东安县| 赣榆县| 黄大仙区| 北票市| 常州市| 资溪县| 汤原县| 宣汉县| 东兴市| 梁平县| 永兴县| 莱芜市| 辽宁省| 怀宁县| 襄垣县| 阆中市| 徐闻县| 固阳县| 佛坪县| 云梦县| 台东县| 海丰县| 辉南县| 荆门市| 呼伦贝尔市| 新沂市| 道孚县| 柞水县| 哈巴河县| 潞城市| 平定县| 定南县| 龙海市|