首部和方法配合工做,共同決定了客戶端和服務器能作什麼事情。html
在請求和響應報文中均可以用首部來提供信息,有些首部是某種報文專用的,有些首部則更通用一些。能夠將首部分爲五個主要的類型。瀏覽器
通用首部:這些是客戶端和服務器均可以使用的通用首部。能夠在客戶端、服務器 和 其餘應用程序之間提供一些很是有用的通用功能。好比,Date 首部就是一個通用首部,每一端均可以用它來講明構建報文的時間和日期。緩存
請求首部:從名字中就能夠看出,請求首部時請求報文特有的。它們爲服務器提供了一些額外信息,好比客戶端但願接收什麼類型的數據。例如,下面的 Accept 首部就用來告知服務器客戶端會接受與其請求相符的任意媒體類型: Accept: */*安全
響應首部:響應報文有本身的首部集,以便爲客戶端提供信息(好比,客戶端在與哪一種類型的服務器進行交互)。例如,下面 Server 首部就用來告知客戶端它在與一個版本 1.0 的 Tiki-Hut 服務器進行交互。 Server: Tiki-Hut/1.0服務器
實體首部:實體首部指的是用於應對實體主體部分的首部。好比,能夠用實體首部來講明實體主體部分的數據類型。例如,能夠經過下列 Content-type 首部告知應用程序,數據是以 iso-latin-1 字符集表示的 HTML 文檔: Content-type: text/html; charset=iso-latin-1cookie
擴展首部:擴展首部時非標準的首部,由應用程序開發者建立,但還未添加到已批准的 HTTP 規範之中。即便不知道這些擴展首部的含義,HTTP 程序也要接受他們並對其進行轉發。ide
通用首部編碼
有些首部提供了與報文相關的最基本的信息,它們被稱爲通用首部。spa
首部 | 描述 |
Connection | 容許客戶端和服務器指定與請求 / 響應鏈接有關的選項 |
Date | 提供日期和時間標誌,說明報文是什麼時間建立的。 |
MIME-Version | 給出了發送端使用的 MIME 版本 |
Trailer | 若是報文采用了分塊傳輸編碼(chunked transfer encoding)方式,就能夠用這個首部列出未育報文拖掛(trailer)部分的首部集合。 |
Transfer-Encoding | 告知接收端爲了保證報文的可靠傳輸,對報文采用了什麼編碼方式 |
Update | 給出了發送端可能想要「升級」使用的新版本或協議 |
Via | 顯示了報文通過的中間節點(代理、網關) |
通用緩存首部操作系統
HTTP/1.0 引入了第一個容許 HTTP 應用程序緩存對象本地副本的首部,這樣就不須要老是直接從源服務器獲取了。最新的 HTTP 版本有很是豐富的緩存參數集。
首部 | 描述 |
Cache-Control | 用於隨報文傳送緩存指示 |
Pragma | 另外一種隨報文傳送指示的方式,但並不專用於緩存 |
請求首部
請求首部時只在請求報文中有意義的首部。用於說明是誰或什麼在發送請求、請求源自何處,或者客戶端的喜愛及能力。服務器能夠根據請求首部給出的客戶端信息,試着爲客戶端提供更好的響應。
首部 | 描述 |
Client-IP | 提供了運行客戶端的機器的 IP 地址 |
From | 提供各種客戶端用戶的 E-mail 地址 |
Host | 給出了接收請求的服務器的主機名和端口號 |
Referer | 提供了包含當前請求 URI 的文檔的 URL |
UA-Color | 提供了與客戶端顯示的顯示顏色有關的信息 |
UA-CPU | 給出了客戶端 CPU 的類型或製造商 |
UA-Disp | 提供了客戶端顯示器(屏幕)能力有關的信息 |
UA-OS | 給出了運行在客戶端機器上的操做系統名稱及版本 |
UA-Pixels | 提供了客戶端顯示器的像素信息 |
User-Agent | 將發起請求的應用程序名稱告知服務器 |
Accept 首部
Accept 首部爲客戶端提供了一種將其喜愛和能力告知服務器的方式,包括它們想要什麼,可使用什麼,以及最重要的,它們不想要什麼。這樣,服務器就能夠根據這些額外信息,對要發送的內容做出更明智的決定。
首部 | 描述 |
Accept | 告訴服務器可以發送哪些媒體類型 |
Accept-Charset | 告訴服務器可以發送哪些字符集 |
Accept-Encoding | 告訴服務器可以發送哪些編碼方式 |
Accept-Language | 告訴服務器可以發送哪些語言 |
TE | 告訴服務器可使用哪些擴展傳輸編碼 |
條件請求首部
有時客戶端但願爲請求加上某些限制。好比,若是客戶端已經有了一份文檔副本,就但願只在服務器上的文檔與客戶端擁有的副本有所區別時,才請求服務器傳輸文檔。
首部 | 描述 |
Expect | 容許客戶端列出某請求所要求的服務器行爲 |
If-Match | 若是實體標記與文檔當前的實體標記相匹配,就獲取這份文檔 |
If-Modified-Since | 除非在某個指定的日期以後資源被修改過,不然就限制這個請求 |
If-None-Match | 若是提供的實體標記與當前文檔的實體標記不相符,就獲取文檔 |
If-Range | 容許對文檔的某個範圍進行條件請求 |
If-Unmodified-Since | 除非在某個指定日期以後資源沒有被修改過,不然就限制這個請求 |
Range | 若是服務器支持範圍請求,就請求資源的指定範圍 |
安全請求首部
HTTP 自己就支持一種簡單的機制,能夠對請求進行質詢 / 響應認證。這種機制要求客戶端在獲取特定的資源以前,先對自身進行認證,這樣就可使事物安全一些。
首部 | 描述 |
Authorization | 包含了客戶端提供給服務器,以便對其自身進行認證的數據 |
Cookie | 客戶端用它向服務器傳送一個令牌 —— 它並非真正的安全首部,但確實隱含了安全功能。 |
Cookie2 | 用來講明請求端支持的 cookie 版本。 |
代理請求首部
隨着因特網上代理的廣泛應用,人們定義了幾個首部來協助其更好的工做。
首部 | 描述 |
Max-Forward | 在通往源端服務器的路徑上,將請求轉發給其餘代理或網關的最大次數 —— 與 TRACE 方法一同使用 |
Proxy-Authorization | 與 Authorization 首部相同,但這個首部時在與代理進行認證時使用的 |
Proxy-Connection | 與 Connection 首部相同,但這個首部是在與代理創建鏈接時使用 |
響應首部
響應報文有本身的響應首部集。響應首部爲客戶端提供了一些額外信息,好比誰在發送響應、響應者的功能,甚至與響應相關的一些特殊指令。
首部 | 描述 |
Age | (從最初建立開始)響應持續時間 |
Public | 服務器爲其資源支持的請求方法列表 |
Retry-After | 若是資源不可用的話,在此日期或時間重試 |
Server | 服務器應用程序軟件的名稱和版本 |
Title | 對 HTML 文檔來講,就是 HTML 文檔的源端給出的標題 |
Warning | 比緣由短語中更詳細的一些的警告報文 |
協商首部
若是資源有多重表示方法 —— 好比,若是服務器上有某文檔的法語和德語譯稿,HTTP/1.1 能夠爲服務器和客戶端提供對資源進行協商的能力。
首部 | 描述 |
Accept-Ranges | 對此資源來講,服務器能夠接受的範圍類型 |
Vary | 服務器查看的其餘首部的列表,可能會使響應發生變化;也就是說,這是一個首部列表,服務器會根據這些首部的內容挑選出最適合的資源版本發送給客戶端 |
安全響應首部
咱們已經看到過安全請求首部了,本質上這裏說的就是 HTTP 的質詢 / 響應認證機制的響應側。 如今在這裏介紹的是一些基本的質詢首部。
首部 | 描述 |
Proxy-Authenticate | 來自代理的對客戶端的質詢列表 |
Set-Cookie | 不是真正的安全首部,但隱含有安全功能;能夠在客戶端設置一個令牌,以便服務器對客戶端進行標識 |
Set-Cookie2 | 與 Set-Cookie 相似,參見 11.6.7 節 |
WWW-Authenticate | 來自服務器的對客戶端的質詢列表 |
實體首部
實體首部提供了有關實體及其內容的大量信息,從有關對象類型的信息,到可以對資源使用的各類有效的請求方法。總之,實體首部能夠告知報文的接受者它在對什麼進行處理。
首部 | 描述 |
Allow | 列出了能夠對其實體執行的請求方法 |
Location | 告知客戶端實體實際上位於何處;用於將接受端定向到資源的(多是新的)位置(URL)上去 |
內容首部
內容首部提供了與實體內容有關的特定信息,說明了其類型、尺寸以及處理它所需的其餘有用信息。好比,Web 瀏覽器能夠經過查看返回的內容類型,得知如何顯示對象。
首部 | 描述 |
Content-Base | 解析主體中的相對 URL 時使用的基礎 URL |
Content-Encoding | 對主體自行的任意編碼方式 |
Content-Language | 理解主體時最適宜使用的天然語言 |
Content-Length | 主體的長度或尺寸 |
Content-Location | 資源實際所處的位置 |
Content-MD5 | 主體的 MD5 校驗和 |
Content-Range | 在整個資源中此實體標識的字節範圍 |
Content-Type | 這個主體的對象類型 |
實體緩存首部
通用的緩存首部說明了如何或神時候進行緩存。 實體的緩存首部提供了與被緩存實體有關的信息 —— 好比,驗證已緩存的資源副本是否仍然有效所需的信息,以及更好的估計已緩存資源什麼時候失效所需的線索。
首部 | 描述 |
ETag | 與此實體相關的實體標記 |
Expires | 實體再也不有效,要從原始的源端再次獲取此實體的日期和時間 |
Last-Modified | 這個實體最後一次被修改的日期和時間 |