1. 程式人生 > 實用技巧 >HTTP Header訊息頭詳解

HTTP Header訊息頭詳解

HTTP訊息頭是指,在超文字傳輸協議( Hypertext Transfer Protocol ,HTTP)的請求和響應訊息中,協議頭部分的那些元件。HTTP訊息頭用來準確描述正在獲取的資源、伺服器或者客戶端的行為,定義了HTTP事務中的具體操作引數。

  1. 關於HTTP訊息頭
  2. 常用的HTTP請求頭
  3. 常用的HTTP響應頭

1. 關於HTTP訊息頭

HTTP訊息頭是在,客戶端請求(Request)或伺服器響應(Response)時傳遞的,位請求或響應的第一行,HTTP訊息體(請求或響應的內容)是其後傳輸。HTTP訊息頭,以明文的字串格式傳送,是以冒號分隔的鍵/值對,如:Accept-Charset: utf-8

,每一個訊息頭最後以回車符(CR)和換行符(LF)結尾。HTTP訊息頭結束後,會用一個空白的欄位來標識,這樣就會出現兩個連續的CR-LF

HTTP訊息頭由IANA(The Internet Assigned Numbers Authority,網際網路數字分配機構)來整理和維護。其標準最早來源於RFC 4229。IANA將其整理到了訊息頭文件,文件中還包括了一些新提出的資訊頭

HTTP訊息頭支援自定義, 自定義的專用訊息頭一般會新增'X-'字首。

2. 常用的HTTP請求頭

協議頭說明示例狀態
Accept 可接受的響應內容型別(Content-Types)。 Accept: text/plain
固定
Accept-Charset 可接受的字符集 Accept-Charset: utf-8 固定
Accept-Encoding 可接受的響應內容的編碼方式。 Accept-Encoding: gzip, deflate 固定
Accept-Language 可接受的響應內容語言列表。 Accept-Language: en-US 固定
Accept-Datetime 可接受的按照時間來表示的響應內容版本 Accept-Datetime: Sat, 26 Dec 2015 17:30:00 GMT 臨時
Authorization 用於表示HTTP協議中需要認證資源的認證資訊 Authorization: Basic OSdjJGRpbjpvcGVuIANlc2SdDE== 固定
Cache-Control 用來指定當前的請求/回覆中的,是否使用快取機制。 Cache-Control: no-cache 固定
Connection 客戶端(瀏覽器)想要優先使用的連線型別 Connection: keep-alive

Connection: Upgrade

固定
Cookie 由之前伺服器通過Set-Cookie(見下文)設定的一個HTTP協議Cookie Cookie: $Version=1; Skin=new; 固定:標準
Content-Length 以8進製表示的請求體的長度 Content-Length: 348 固定
Content-MD5 請求體的內容的二進位制 MD5 雜湊值(數字簽名),以 Base64 編碼的結果 Content-MD5: oD8dH2sgSW50ZWdyaIEd9D== 廢棄
Content-Type 請求體的MIME型別 (用於POST和PUT請求中) Content-Type: application/x-www-form-urlencoded 固定
Date 傳送該訊息的日期和時間(以RFC 7231中定義的"HTTP日期"格式來發送) Date: Dec, 26 Dec 2015 17:30:00 GMT 固定
Expect 表示客戶端要求伺服器做出特定的行為 Expect: 100-continue 固定
From 發起此請求的使用者的郵件地址 From: [email protected] 固定
Host 表示伺服器的域名以及伺服器所監聽的埠號。如果所請求的埠是對應的服務的標準埠(80),則埠號可以省略。 Host: www.itbilu.com:80

Host: www.itbilu.com

固定
If-Match 僅當客戶端提供的實體與伺服器上對應的實體相匹配時,才進行對應的操作。主要用於像 PUT 這樣的方法中,僅當從使用者上次更新某個資源後,該資源未被修改的情況下,才更新該資源。 If-Match: "9jd00cdj34pss9ejqiw39d82f20d0ikd" 固定
If-Modified-Since 允許在對應的資源未被修改的情況下返回304未修改 If-Modified-Since: Dec, 26 Dec 2015 17:30:00 GMT 固定
If-None-Match 允許在對應的內容未被修改的情況下返回304未修改( 304 Not Modified ),參考 超文字傳輸協議 的實體標記 If-None-Match: "9jd00cdj34pss9ejqiw39d82f20d0ikd" 固定
If-Range 如果該實體未被修改過,則向返回所缺少的那一個或多個部分。否則,返回整個新的實體 If-Range: "9jd00cdj34pss9ejqiw39d82f20d0ikd" 固定
If-Unmodified-Since 僅當該實體自某個特定時間以來未被修改的情況下,才傳送迴應。 If-Unmodified-Since: Dec, 26 Dec 2015 17:30:00 GMT 固定
Max-Forwards 限制該訊息可被代理及閘道器轉發的次數。 Max-Forwards: 10 固定
Origin 發起一個針對跨域資源共享的請求(該請求要求伺服器在響應中加入一個Access-Control-Allow-Origin的訊息頭,表示訪問控制所允許的來源)。 Origin: http://www.itbilu.com 固定: 標準
Pragma 與具體的實現相關,這些欄位可能在請求/迴應鏈中的任何時候產生。 Pragma: no-cache 固定
Proxy-Authorization 用於向代理進行認證的認證資訊。 Proxy-Authorization: Basic IOoDZRgDOi0vcGVuIHNlNidJi2== 固定
Range 表示請求某個實體的一部分,位元組偏移以0開始。 Range: bytes=500-999 固定
Referer 表示瀏覽器所訪問的前一個頁面,可以認為是之前訪問頁面的連結將瀏覽器帶到了當前頁面。Referer其實是Referrer這個單詞,但RFC製作標準時給拼錯了,後來也就將錯就錯使用Referer了。 Referer: http://itbilu.com/nodejs 固定
TE 瀏覽器預期接受的傳輸時的編碼方式:可使用迴應協議頭Transfer-Encoding中的值(還可以使用"trailers"表示資料傳輸時的分塊方式)用來表示瀏覽器希望在最後一個大小為0的塊之後還接收到一些額外的欄位。 TE: trailers,deflate 固定
User-Agent 瀏覽器的身份標識字串 User-Agent: Mozilla/…… 固定
Upgrade 要求伺服器升級到一個高版本協議。 Upgrade: HTTP/2.0, SHTTP/1.3, IRC/6.9, RTA/x11 固定
Via 告訴伺服器,這個請求是由哪些代理髮出的。 Via: 1.0 fred, 1.1 itbilu.com.com (Apache/1.1) 固定
Warning 一個一般性的警告,表示在實體內容體中可能存在錯誤。 Warning: 199 Miscellaneous warning 固定

3. 常用的HTTP響應頭

響應頭說明示例狀態
Access-Control-Allow-Origin 指定哪些網站可以跨域源資源共享 Access-Control-Allow-Origin: * 臨時
Accept-Patch 指定伺服器所支援的文件補丁格式 Accept-Patch: text/example;charset=utf-8 固定
Accept-Ranges 伺服器所支援的內容範圍 Accept-Ranges: bytes 固定
Age 響應物件在代理快取中存在的時間,以秒為單位 Age: 12 固定
Allow 對於特定資源的有效動作; Allow: GET, HEAD 固定
Cache-Control 通知從伺服器到客戶端內的所有快取機制,表示它們是否可以快取這個物件及快取有效時間。其單位為秒 Cache-Control: max-age=3600 固定
Connection 針對該連線所預期的選項 Connection: close 固定
Content-Disposition 對已知MIME型別資源的描述,瀏覽器可以根據這個響應頭決定是對返回資源的動作,如:將其下載或是開啟。 Content-Disposition: attachment; filename="fname.ext" 固定
Content-Encoding 響應資源所使用的編碼型別。 Content-Encoding: gzip 固定
Content-Language 響就內容所使用的語言 Content-Language: zh-cn 固定
Content-Length 響應訊息體的長度,用8進位制位元組表示 Content-Length: 348 固定
Content-Location 所返回的資料的一個候選位置 Content-Location: /index.htm 固定
Content-MD5 響應內容的二進位制 MD5 雜湊值,以 Base64 方式編碼 Content-MD5: IDK0iSsgSW50ZWd0DiJUi== 已淘汰
Content-Range 如果是響應部分訊息,表示屬於完整訊息的哪個部分 Content-Range: bytes 21010-47021/47022 固定
Content-Type 當前內容的MIME型別 Content-Type: text/html; charset=utf-8 固定
Date 此條訊息被髮送時的日期和時間(以RFC 7231中定義的"HTTP日期"格式來表示) Date: Tue, 15 Nov 1994 08:12:31 GMT 固定
ETag 對於某個資源的某個特定版本的一個識別符號,通常是一個 訊息雜湊 ETag: "737060cd8c284d8af7ad3082f209582d" 固定
Expires 指定一個日期/時間,超過該時間則認為此迴應已經過期 Expires: Thu, 01 Dec 1994 16:00:00 GMT 固定: 標準
Last-Modified 所請求的物件的最後修改日期(按照 RFC 7231 中定義的“超文字傳輸協議日期”格式來表示) Last-Modified: Dec, 26 Dec 2015 17:30:00 GMT 固定
Link 用來表示與另一個資源之間的型別關係,此型別關係是在RFC 5988中定義 Link:; rel="alternate" 固定
Location 用於在進行重定向,或在建立了某個新資源時使用。 Location: http://www.itbilu.com/nodejs 固定
P3P P3P策略相關設定 P3P: CP="This is not a P3P policy! 固定
Pragma 與具體的實現相關,這些響應頭可能在請求/迴應鏈中的不同時候產生不同的效果 Pragma: no-cache 固定
Proxy-Authenticate 要求在訪問代理時提供身份認證資訊。 Proxy-Authenticate: Basic 固定
Public-Key-Pins 用於防止中間攻擊,宣告網站認證中傳輸層安全協議的證書雜湊值 Public-Key-Pins: max-age=2592000; pin-sha256="……"; 固定
Refresh 用於重定向,或者當一個新的資源被建立時。預設會在5秒後重新整理重定向。 Refresh: 5; url=http://itbilu.com
Retry-After 如果某個實體臨時不可用,那麼此協議頭用於告知客戶端稍後重試。其值可以是一個特定的時間段(以秒為單位)或一個超文字傳輸協議日期。
  • 示例1:Retry-After: 120
  • 示例2: Retry-After: Dec, 26 Dec 2015 17:30:00 GMT

固定

Server 伺服器的名稱 Server: nginx/1.6.3 固定
設定HTTP cookie Set-Cookie: UserID=itbilu; Max-Age=3600; Version=1 固定: 標準
Status 通用閘道器介面的響應頭欄位,用來說明當前HTTP連線的響應狀態。 Status: 200 OK
Trailer Trailer使用者說明傳輸中分塊編碼的編碼資訊 Trailer: Max-Forwards 固定
Transfer-Encoding 用表示實體傳輸給使用者的編碼形式。包括:chunkedcompressdeflategzipidentity Transfer-Encoding: chunked 固定
Upgrade 要求客戶端升級到另一個高版本協議。 Upgrade: HTTP/2.0, SHTTP/1.3, IRC/6.9, RTA/x11 固定
Vary 告知下游的代理伺服器,應當如何對以後的請求協議頭進行匹配,以決定是否可使用已快取的響應內容而不是重新從原伺服器請求新的內容。 Vary: * 固定
Via 告知代理伺服器的客戶端,當前響應是通過什麼途徑傳送的。 Via: 1.0 fred, 1.1 itbilu.com (nginx/1.6.3) 固定
Warning 一般性警告,告知在實體內容體中可能存在錯誤。 Warning: 199 Miscellaneous warning 固定
WWW-Authenticate 表示在請求獲取這個實體時應當使用的認證模式。 WWW-Authenticate: Basic 固定