HTTP協議報頭信息詳解_第1頁
HTTP協議報頭信息詳解_第2頁
HTTP協議報頭信息詳解_第3頁
HTTP協議報頭信息詳解_第4頁
HTTP協議報頭信息詳解_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、HTTP協議報頭信息詳解對HTTP協議的頭信息詳解HTTP (HyperTextTransferProtocol)是超文本傳輸協議的縮寫,它用于傳送WWW方 式的數據,關于HTTP協議的詳細內容請參考RFC2616。HTTP協議采用了請求/響應模型??蛻舳讼蚍掌靼l(fā)送一個請求,請求頭包含請求 的方法、URk協議版本、以及包含請求修飾符、 客戶信息和內容的類似于MIME的消息結構。服務器以一個狀態(tài)行作為響應,相應的內容包括 消息協議的版本,成功或者錯誤編碼加上包含服 務器信息、實體元信息以及可能的實體內容。通常HTTP消息包括客戶機向服務器的請求 消息和服務器向客戶機的響應消息。這兩種類型 的消

2、息由一個起始行,一個或者多個頭域,一個 只是頭域結束的空行和可 選的消息體組成。HTTP的頭域包括通用頭,請求頭,響應頭和實體頭四個部分。每個頭域由一個域名,冒號(:) 和域值三部分組成。域名是大小寫無關的,域 值 前可以添加任何數量的空格符,頭域可以被擴展 為多行,在每行開始處,使用至少一個空格或制 表符。通用頭域通用頭 域包含請求和響應消息都支持的頭 域,通用頭域包含Cache-Control、 Connection、Date、Pragma、 Transfer-Encoding Upgrade、Via。對通用 頭域的擴展要求通訊雙方都支持此擴展,如果 存在不支持的通用頭域,一般將會作為實體

3、頭域 處理。下面簡單介紹幾個在UPnP消息中使用的 通用頭域。Cache-Control 頭域Cache -Control指定請求和響應遵循的緩存機制。在請求消息或響應消息中設置Cache-Control并不會修改另一個消息處理過程中的緩存處理過程。請求時的緩存指令包括no-cache no-store max-age max-stale、 min-fresh only-if-cached9 響應消息中的指 令包括 public、private no-cache no- store no-transform must-revalidateproxy-revalidate max-ageo 各個

4、消息中的指令含義如下:Public指示響應可被任何緩存區(qū)緩存。Private指示對于單個用戶的整個或部分響應消 息,不能被共享緩存處理。這允許服務器僅僅描 述當用戶的部分響應消息,此響應消息對于其他 用戶的請求無效。no-cache指示請求或響應消息不能緩存 no-store用于防止重要的信息被無意的發(fā)布。在請求消息中發(fā)送將使得請求和響應消息都不 使用緩存。max-age指示客戶機可以接收生存期不大于指 定時間(以秒為單位)的響應。min-fresh指示客戶機可以接收響應時間小于當 前時間加上指定時間的響應。max-stale指示客戶機可以接收超出超時期間 的響應消息。如果指定max-stal

5、e消息的值,那 么客戶機可以接收超出超時期指定值之內的響 應消息。Date頭域Date頭域表示消息發(fā)送的時間,時間的描述格式由rfc822定義。例如,Date:Mon,31Dec200104:25:57GMTo Date 描 述的時間表示世界標準時,換算成本地時間,需 要知道用戶所在的時區(qū)。Pragma頭域Pragma頭域用來包含實現特定的指令,最常用 的是 Pragma:no-cacheo 在 HTTP/1.1 協議中, 它的含義和Cache- Control:no-cache相同。請求消息 請求消息的第一行為下面的格式:MethodSPRequest-URISPHTTP-VersionCR

6、 LFMethod表示對于Request-URI完成的方 法,這個字段是大小寫敏感的,包括OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACEo方法GET和HEAD應該被所有的通用WEB服 務器支持,其他所有方法的實現是可選的。GET方法取回由Request-URI標識的信息。HEAD方法也是取I由Request-URI標識的信息,只是可以在響應時,不返回消息體。POST方法可 以請求服務器接收包含在請求中的實體信息,可 以用于提交表單,向新聞組、BBS、郵件群組和 數據庫發(fā)送消息。SP表示空格。Request-URI遵循URI格式,在此字段為星號(*)時,說明請求并不

7、用于某個 特定的資源地址,而是用于服務器本身。HTTP-Version表示支持的HTTP版本,例如為HTTP/1.1oCRLF表示換行回車符。請求頭域允許客戶端向服務器傳遞關于請求或者關于客戶 機的附加信息。請求頭域可能包含下列字段Accepts Accept-Charset Accept- Encoding、 Accept-Language Authorization From、 Host、lf-Modified-Since If- Match lfNone-Match、 lf-Range lf-Range lf-Unmodified-Since Max-Forwards、Proxy-Aut

8、horization Range、RefererUser-Agent o對請求頭域的擴展要求通訊雙方都支持,如果存在不支持的請求頭域,一般將 會作為實體頭域處理。典型的請求消息:GEThttp:/download.microtool.de:80/somedata. exeHost: download.microtool.deAccept:*/*Pragma: no-cacheCache-Control: no-cacheReferer: http:/download.microtool.de/User-Agent:Mozilla/4.04en(Win95;l;Nav)Range:bytes=5

9、54554-上例第一行表示HTTP客戶端(可能是瀏覽 器、下載程序)通過GET方法獲得指定URL下 的文件。棕色的部分表示請求頭域的信息,綠色 的部分表示通用頭部分。Host頭域Host頭域指定請求資源的Intenet主機和端口號,必須表示請求url的原始服務器或網關的 位置。HTTP/L1請求必須包含主機頭域,否則 系統會以400狀態(tài)碼返回。Referer 頭域Referer頭域允許客戶端指定請求uri的源資源地址,這可以允許服務器生成回退鏈表,可用 來登陸、優(yōu)化cache等。他也允許廢除的或錯 誤的連接由于維護的目的被追蹤。如果請求的uri沒有自己的uri地址,Referer不能被發(fā)送。

10、如果指定的是部分uri地址,則此地址應該是一 個相對地址。Range頭域Range頭域可以請求實體的一個或者多個子范圍。例如,表示頭500個字節(jié):bytes=0-499 表示第二個500字節(jié):bytes=500-999表示最后500個字節(jié):bytes=-500表示500字節(jié)以后的范圍:bytes=500-第一個和最后一個字節(jié):bytes=0-0,-1 同時指定幾個范圍:bytes=500-600,601 -999但是服務器可以忽略此請求頭,如果無條件GET包含Range請求頭,響應會以狀態(tài)碼206(PartialContent)返回而不是以 200 (OK)。User-Agent 頭域User

11、-Agent頭域的內容包含發(fā)出請求的用戶信息。響應消息響應消息的第一行為下面的格式:HTTP-VersionSPStatus-CodeSPReason- PhraseCRLFHTTP -Version表示支持的HTTP版本,例 如為HTTP/1.1 o Status- Code是一個三個數字的結果代碼。Reason-PhraseStatus-Code提供一個簡單的文本描述。Status-Code主要用 于機器自動識別,Reason-Phrase主要用于幫 助用戶理解。Status-Code的第一個數字定義響 應的類別,后兩個數字沒有分類的作用。第一個 數字可能取5個不同的值:1 xx:信息響應

12、類,表示接收到請求并且繼續(xù)處2xx:處理成功響應類,表示動作被成功接收、 理解和接受3xx:重定向響應類,為了完成指定的動作,必 須接受進一步處理4xx:客戶端錯誤,客戶請求包含語法錯誤或者是不能正確執(zhí)行5xx:服務端錯誤,服務器不能正確執(zhí)行一個正確的請求響應頭域允許服務器傳遞不能放在狀態(tài)行的 附加信息,這些域主要描述服務器的信息和 RequestURI進一步的信息。響應頭域包含 Age、Location Proxy-Authenticate Public、 Retry-After、Server、Vary、Warning WWW-Authenticateo對響應頭域的擴展要求 通訊雙方都支持,

13、如果存在不支持的響應頭 域, 一般將會作為實體頭域處理。典型的響應消息:HTTP/1.02000KDate:Mon,31 Dec200104:25:57GMTServer :Apache/1.3.14(Unix)Content-type:text/htmlLast-modified:Tue,17Apr200106:46:28GMTEtag:f,a030f020ac7c01:1e9fMContent-length :39725426Content-range:bytes554554-40279979/4027 9980上例第一行表示HTTP服務端響應一個GET 方法。棕色的部分表示響應頭域的信息

14、,綠色的 部分表示通用頭部分,紅色的部分表示實體頭域 的信息。Location響應頭Location響應頭用于重定向接收者到一個新 URI地址。Server響應頭Server響應頭包含處理請求的原始服務器的軟件信息。此域能包含多個產品標識和注釋, 產品標識一般按照重要性排序。實體請求消息和響應消息都可以包含實體信息,實 體信息一般由實體頭域和實體組成。實體頭域包 含關于實體的原信息,實體頭包括Allow、Content- Base、Content-EncodingContent-Language Content-LengthsContent-Location、Content-MD5Conten

15、t-Range、Content-Type、 EtagExpires、Last-Modified extension-header。extension-header允許客戶端定義新的實體頭,但是這些域可能無法未接受方識別。實體可 以是一個經過編碼的字節(jié)流,它的編碼方式由Content-Encoding 或 Content-Type 定 義, 它的長度由Content-Length或 Content-Range 定義。Content-Type 實體頭Content-Type實體頭用于向接收方指示實體 的介質類型,指定HEAD方法送到接收方的實 體介質類型,或GET方法發(fā)送的請求介質類型Conten

16、t-Range 實體頭Content-Range實體頭用于指定整個實體中的一部分的插入位置,他也指示了整個實體的長度。在服務器向客戶返回一個部分響應,它必須 式:描述響應覆蓋的范圍和整個實體長度。般格Content-Range:bytes-unitSPfirst-byte-po s-last-byte-pos/entity-legth例如,傳送頭500個字節(jié)次字段的形式:Content-Range:bytesO- 499/1234 如果個http消息包含此節(jié)(例如,對范圍請求的響應或對一系列范圍的重疊請求),Content-Range 表示傳送的范圍,ContentLength表示實際傳 送的

17、字節(jié)數。Last-modified 實體頭應答頭說明Allow服務器支持哪些請求方法(如GET、POST等)。文檔的編碼(Encode)方法。只有在解碼之后才可Ient-EncodingContent-Type頭指定的內容類型。利用gzip壓縮文本 顯著地減少HTML文檔的 下載時間。Ja GZIPOutputStream可以很方便地進行gzip壓縮,( Unix 上的 Netscape 和 Windows 上的 IE 4、IE 5 ; 它。因此,Servlet應該通過查看Accept-Encoding : request.getHeader(vvAccept- Encoding)檢查瀏)否支

18、持gzip,為支持gzip的瀏覽器返回經gzip IHTML頁面,為其他瀏覽器返回普通頁面。itent-Length表示內容長度。只有當瀏覽器使用持久HTTP連接口要這個數據。如果你想要利用持久連接的優(yōu)勢,可以寺 文檔寫入ByteArrayOutputStram,完成后查看其二 然后把該值放入Content-Length頭,最后 byteArrayStream.writeTo(response.getOutputStr 發(fā)送內容。表示后面的文檔屬于什么MIME類型。Servletntent-TypeDate頭以避免轉換時間格式的麻煩。Expires應該在什么時候認為文檔已經過期,從而不再緩存它

19、text/plain,但通常需要顯式地指定為text/htmL由二 要設置 Content-Type,因此 HttpServletResponse 了一個專用的方法setContentTyepo 當前的GMT時間。你可以用setDateHeader來設文 檔的最后改動時間??蛻艨梢酝ㄟ^lfModifiedSir求頭提供一個日期,該請求將被視為一個條件GET,st-Modified改動時間遲于指定時間的文檔才會返回,否則返E304 ( Not Modified )狀態(tài)。Last-Modified 也 setDateHeader方法來設置。Location表示客戶應當到哪里去提取文檔。Location通常不;! 設置的,而是通過 HttpServletResponse 的 sendRe方法,該方法同時設置狀態(tài)代碼為302。表示瀏覽器應該在多少時間之后刷新文檔,以秒計。R 新當前文檔之外,你還可以通過setHeader(RefresF URL=http:/host/path)讓瀏覽器讀取指定的頁面。注 意這種功能通常是通過設置HTML頁面HEAD METAHTTP-EQUIV=MRefCONTENT=5;

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論