通常 HTTP 消息包括客戶機向伺服器的請求消息和伺服器向客戶機的響應消息。這兩種類型的消息由一個起始行,一個或者多個頭域,一個隻是頭域結束的空行和可選的消息體組成。HTTP 的頭域包括通用頭,請求頭,響應頭和實體頭四個部分。每個頭域由一個域名,冒号(:)和域值三部分組成。域名是大小寫無關的,域值前可以添加任何數量的空格符,頭域可以被擴充為多行,在每行開始處,使用至少一個空格或制表符。
四種不同類型的頭域
通用頭域:即可用于請求,也可用于響應,是作為一個整體而不是特定資源與事務相關聯。
請求頭域:允許用戶端傳遞關于自身的資訊和希望的響應形式。
響應頭域:伺服器和于傳遞自身資訊的響應。
實體頭域:定義被傳送資源的資訊。即可用于請求,也可用于響應。
頭域格式:<name>:<value><CRLF>
Accept
定義用戶端可以處理的媒體類型,*/* 表示任何類型,type/* 表示該類型下的所有子類型。
Accept-Charset
定義用戶端可以處理的字元集
Accept-Encoding
定義用戶端可以了解的編碼機制,通常指定壓縮方法,是否支援壓縮,支援什麼壓縮方法(gzip,deflate)
Accept-Language
定義用戶端樂于接受的自然語言清單。例如:Accept-Language: en,de
Accept-Ranges
WEB伺服器表明自己是否接受擷取其某個實體的一部分(比如檔案的一部分)的請求( bytes:表示接受,none:表示不接受)
Age
當代理伺服器用自己緩存的實體去響應請求時,用該頭部表明該實體從産生到現在經過多長時間了,以秒為機關。
Authorization
當用戶端接收到來自WEB伺服器的 WWW-Authenticate 響應時,用該頭部來回應自己的身份驗證資訊給WEB伺服器。
Cache-Control
一個用于定義緩存指令的通用頭标。
Connection
一個用于表明是否儲存socket連接配接為開放的通用頭資訊。
例如:Keep-Alive:300
Content-Encoding
WEB伺服器表明自己使用了什麼壓縮方法(gzip,deflate)壓縮響應中的對象。
Content-Language
WEB 伺服器告訴浏覽器自己響應的對象的語言。
Content-Length
WEB 伺服器告訴浏覽器自己響應的對象的長度。
Content-Range
WEB 伺服器表明該響應包含的部分對象為整個對象的哪個部分。
Content-Type
WEB伺服器告訴浏覽器自己響應的對象的類型。
Date
發送HTTP消息的日期和時間。
ETag
就是一個對象(比如URL)的标志值,,ETag 的作用跟 Last-Modified 的作用差不多,主要供 WEB 伺服器判斷一個對象是否改變了。
Expired
WEB伺服器表明該實體将在什麼時候過期,對于過期了的對象,隻有在跟WEB伺服器驗證了其有效性後,才能用來響應客戶請求。
Host
被請求資源的主機名。對于使用HTTP/1.1的請求而言,此域是強制性的。
If-Match
如果對象的 ETag 沒有改變,其實也就意味著對象沒有改變,才執行請求的動作。
If-None-Match
如果對象的 ETag 改變了,其實也就意味著對象也改變了,才執行請求的動作。
If-Modified-Since
如果請求的對象在該頭部指定的時間之後修改了,才執行請求的動作(比如傳回對象),否則傳回代碼304,告訴浏覽器該對象沒有修改。
If-Range
浏覽器告訴 WEB 伺服器,如果我請求的對象沒有改變,就把我缺少的部分給我,如果對象改變了,就把整個對象給我。浏覽器通過發送請求對象的 ETag 或者 自己所知道的最後修改時間給 WEB 伺服器,讓其判斷對象是否改變了,必須跟 Range 頭部一起使用。
Last-Modified
WEB 伺服器認為對象的最後修改時間,比如檔案的最後修改時間,動态頁面的最後産生時間等等。
Location
WEB伺服器告訴浏覽器,試圖通路的對象已經被移到别的位置了,到該頭部指定的位置去取。
Pramga
一個通用頭标,它發送實作相關的資訊,主要使用 Pramga: no-cache,相當于 Cache-Control: no-cache。
Proxy-Authenticate
代理伺服器響應浏覽器,要求其提供代理身份驗證資訊。
Proxy-Authorization
浏覽器響應代理伺服器的身份驗證請求,提供自己的身份資訊。
Range
浏覽器(比如 Flashget 多線程下載下傳時)告訴 WEB 伺服器自己想取對象的哪部分。
Referer
浏覽器向 WEB 伺服器表明自己是從哪個 網頁/URL 獲得/點選 目前請求中的網址/URL。
Server
WEB 伺服器表明自己是什麼軟體及版本等資訊。
User-Agent
浏覽器表明自己的身份(是哪種浏覽器等資訊)。
Transfer-Encodin
WEB伺服器表明自己對本響應消息體(不是消息體裡面的對象)作了怎樣的編碼,比如是否分塊
Vary
WEB伺服器用該頭部的内容告訴 Cache 伺服器,在什麼條件下才能用本響應所傳回的對象響應後續的請求。
Via
列出從用戶端到 OCS 或者相反方向的響應經過了哪些代理伺服器,他們用什麼協定(和版本)發送的請求。
本文轉自Tar0 51CTO部落格,原文連結:http://blog.51cto.com/tar0cissp/1346533,如需轉載請自行聯系原作者