天天看點

第207天:HTTP協定頭字段詳解大全1、Accept2、Accept-Charset3、Content-Type4、Accept-Language5、Content-Language6、Content-Length7、Content-Location8、Content-MD5

本篇重點介紹一下HTTP常用的Header

HTTP Header非常之多,很少有人能完全厘清這些Header到底是幹什麼的。鑒于RFC檔案規範艱深晦澀難懂,本文對協定規範中列出的HTTP Header進行了梳理,用通俗的語言進行表達,便于讀者吃透HTTP協定。

1、Accept

表示用戶端期望伺服器傳回的媒體格式。用戶端期望的資源類型伺服器可能沒有,是以用戶端會期望多種類型,并且設定優先級,伺服器根據優先級尋找相應的資源傳回給用戶端。

1 # 注意:先逗号分割類型,再分号分割屬性
2 Accept: audio/*; q=0.2, audio/basic      

表示audio/basic類型的資源優先,如果沒有,就随便其它什麼格式的audio資源都可以。q的取值範圍是(0-1],其具體值并沒有意義,它僅用來排序優先級,如果沒有q,預設q=1,也就是最高優先級。

2、Accept-Charset

表示用戶端期望伺服器傳回的内容的編碼格式。它同Accept頭一樣,也可以指定多個編碼,以q值代表優先級。

1 # 注意:先逗号分割類型,再分号分割屬性
2 Accept-Charset: utf8, gbk; q=0.6      

表示utf8編碼優先,如果不行,就拿gbk編碼傳回.

3、Content-Type

Content-Type是伺服器向用戶端發送的頭,代表内容的媒體類型和編碼格式,是對Accept頭和Accept-Charset頭的統一應答。

1 Content-Type: text/html; charset=utf8      

表示傳回的Body是個html文本,編碼為utf8

第207天:HTTP協定頭字段詳解大全1、Accept2、Accept-Charset3、Content-Type4、Accept-Language5、Content-Language6、Content-Length7、Content-Location8、Content-MD5

4、Accept-Language

表示用戶端期望伺服器傳回的内容的語言。很多大型網際網路公司是全球化的,它的技術文檔一般有有多種語言,通過這個字段可以實作文檔的本地化,對國内使用者呈現簡體中文文檔,對英語系使用者呈現英文文檔。

Accept-Language:zh-CN,en-US;q=0.8,zh-TW;q=0.6      

表示大陸簡體中文優先,其次英語,再其次台灣繁體中文

5、Content-Language

這個頭字段内容是對Accept-Language的應答。伺服器通過此字段告知用戶端傳回的Body資訊的語言是什麼。

第207天:HTTP協定頭字段詳解大全1、Accept2、Accept-Charset3、Content-Type4、Accept-Language5、Content-Language6、Content-Length7、Content-Location8、Content-MD5

6、Content-Length

表示傳輸的請求/響應的Body的長度。GET請求因為沒有Body,是以不需要這個頭。攜帶Body的并且可以提前知道Body長度的請求/響應必須帶上這個字段,以便對方可以友善的分辨出封包的邊界,也就是Body資料何時結束。如果Body太大,需要邊計算邊傳輸,不到最後計算結束是無法知道整個Body大小的,這個時候可以使用http分塊傳輸,這個時候也是不需要Content-Length字段的。

7、Content-Location

當用戶端請求的資源在伺服器有多個位址時,伺服器可以通過Content-Location字段告知用戶端其它的可選位址。這個字段比較少見。

8、Content-MD5

在Header中提供這個資訊是用來做Body内容校驗。它表示Body資訊被md5算法處理後的base64字元串。這個字段也比較少見。因為校驗機制在TCP層已經有實作了,再來一層校驗并沒有多大意義。另外資源的md5值往往用來放在後面的ETag頭資訊中作為資源的唯一辨別來使用。