HTTP 報文 之 HTTP 首部

首部和方法配合工做,共同決定了客戶端和服務器能作什麼事情。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 這個實體最後一次被修改的日期和時間
相關文章
相關標籤/搜索