header 頭部字段彙總

http協議的請求和響應報文中一定包含http首部,只是平時咱們在使用Web的過程當中感覺不到它,對它關注的也不是不少,最近在閱讀《圖解HTTP》,學習一下HTTP首部的結構,已經首部中各字段的用法。html

HTTP報文首部

HTTP協議的請求和響應報文中一定包含HTTP首部,首部內容爲客戶端和服務器分別處理請求和響應提供所須要的信息。列了一個請求和響應報文的大體結構腦圖 算法

HTTP報文結構
請求和響應中都會存在着首部字段,它們爲瀏覽器和服務器,傳遞額外重要信息。 一般HTTP首部字段由首部字段名和字段值,中間以":"分割組成:

Request Method: GET
複製代碼

字段值對應單個HTTP首部字段能夠有多個值:json

cache-control: public, max-age=0
複製代碼

首部字段類型

HTTP首部字段根據實際用途分爲4中類型。瀏覽器

通用首部字段: 請求報文和響應報文兩方都會使用到的首部。緩存

請求首部字段: 從客戶端向服務器發送請求報文時使用的首部,補充了請求的附加內容、客戶端信息、響應內容相關優先級等信息。bash

響應首部字段: 從服務器端向客戶端返回響應報文時使用的首部,補充了響應時的附加內容,也會要求客戶端附加額外的內容信息。服務器

實體首部字段: 針對請求報文和響應報文的實體部分使用到的首部,補充了資源內容更新時間等與實體有關的信息。app

通用首部字段ide

首部字段名 說明
Cache-Control 控制緩存行爲
Connection 逐跳首部、鏈接的管理
Date 建立報文的日期時間
Pragma 報文指令
Transfer-Encoding 指定報文傳輸主體的編碼方式
Upgrade 升級爲其餘協議
Via 代理服務器的相關信息
Warning 錯誤通知

請求首部字段學習

首部字段名 說明
Accept 用戶代理能夠處理的媒體類型
Accept-Charset 優先的字符集
Accept-Encoding 優先的內容編碼
Authorization Web認證信息
Except 期待服務器的特定行爲
Host 請求資源所在的服務器
if-Match 比較實體標記(ETag)
if-Modified-Since 比較資源的更新時間
Range 實體的字節範圍請求
Refer 實體的字節範圍請求
TE 傳輸編碼的優先級
User-Agent HTTP客戶端程序的信息

響應首部字段

首部字段名 說明
Accept-Ranges 是否接受字節範圍請求
Age 推算資源建立通過的時間
ETag 資源的匹配信息
Location 令客戶端重定向至指定UPI
Proxy-Authenticate 代理服務器對客戶端的認證信息
WWW-Authenticate 服務器對客戶端的認證信息
Server HTTP服務器的安裝信息
Vary 代理服務器的管理信息

實體首部字段

首部字段名 說明
Allow 資源可支持的HTTP方法
Content-Encoding 實體主體適用的編碼方式
Content-Language 實體主體的天然語言
Content-Length 實體主體的大小
Content-Location 替代對應資源的URI
Content-MD5 實體主體的報文摘要
Content-Range 實體主體的位置範圍
Content-Type 實體主體的媒體類型
EXpires 實體主體過時的日期時間
Last-Modified 資源的最後修改日期時間

一一細說

Cache-Control

Connection

  • 能夠控制將某些字段再也不轉發給代理

控制再也不轉發給代理的首部字段Upgrade

  • 管理持久鏈接
Connection : Keep-Alive
複製代碼

Date 代表建立HTTP報文的日期和時間

date: Sun, 19 May 2019 06:05:00 GMT
複製代碼

PraGma 用來向後兼容只支持HTTP/1.0協議的緩存服務器,那時候 HTTP/1.1 協議中的 Cache-Control 尚未出來。

Pragma: no-cache

Trailer 說明報文主體後使用了哪些首部字段,可用在HTTP/1.1版本分塊傳輸編碼時。

Transfer-Encoding 規定了傳輸報文主體時採用的編碼方式(僅對分塊傳輸編碼有效)

Upgrade 用於檢測HTTP協議及其餘協議是否可以使用更高的版本進行通訊,其參數值能夠用來指定一個徹底不一樣的通訊協議(僅限與客戶端和臨接服務器之間,所以使用首部字段Upgrade時還須要額外指定connection:Upgrade)

Via 爲了追蹤客戶端和服務器之間的請求和響應報文的傳輸路徑。當報文通過代理或網關時,會先在首部字段Via中附加該服務器的信息,而後在進行轉發

Via記錄傳輸過程當中的代理或網關信息

Warning 一般會告知用戶與緩存有關的問題的警告信息,格式以下

Warning [警告碼] [警告的主機:端口號] "警告內容" ([日期時間])

請求首部字段

是從客戶端往服務器端發送請求報文中所使用的字段,用於補充請求的附加信息、客戶端信息、對響應內容相關的優先級等內容。

Accept 通知服務器,用戶代理可以處理的媒體類型及媒體類型的相對優先級,可使用q=num來表明權重的優先值,權重值num的取值範圍是0-1,能夠精確到三位小數,1爲權重最大值,默認爲1.

Accept: text/html,application/json;q=0.9, application/xml;q=0.8

Accept-Charset 首部字段可用來通知服務器用戶代理支持的字符集及字符集的相對優先順序,權重用法同Accept字段的q

Accept-Encoding 首部字段可用來通知服務器用戶代理支持的內容編碼及編碼的優先級,能夠一次性指定多種內容編碼,採用權重q表示優先級。

Accept-Encoding: gzip, deflate, cpmpress, identity
複製代碼

Accept-Language 首部字段用來告知服務器,用戶代理可以處理的語言,採用權重q指定優先級

Authorization 用來告知服務器用戶代理的認證信息, 用於驗證用戶身份的憑證。

Expect 用於告知服務器指望出現的某種特定行爲, 瀏覽器暫不使用

Form 發送請求的用戶代理的郵箱的實際操控者的郵箱

Host 指明請求服務器的域名, 及服務器所監聽的Tcp端口號,若是沒有給定端口,會自動使用被請求服務的默認端口, 用於告知服務器請求資源所處的服務器域名及端口號。

條件請求

形如 if-XXXX的請求首部字段,都是條件請求,服務器接收到附帶的請求條件後,只有當條件知足時,服務器纔會執行

if-Match 一般在請求方法爲get時,服務器僅在請求資源的ETag值爲if-Match首部字段值之一時,纔會返回資源,當請求方法爲Put時,才容許上傳資源。ETag爲一份資源獨一無二的實體標記,資源更新後實體標記值ETag也會更新。

if-Modified-since 一般該字段只用在get請求中,若是資源在if-Modified-Since字段值日期以後發生更新,則服務器接受該請求, 不然會返回一個不帶響應體的304(Not Modified),用於確認代理或客戶端本地資源的有效性

if-None-Match 當且僅當服務器上沒有任何資源的實體標記ETag值與該首部字段中列出的值相對應是,服務器纔會返回所請求的資源,不然返回304

if-Range 範圍請求;用來當知足條件時(當if-range字段值中的條件獲得知足,一般是知足last-Modified或ETag),是Range字段起做用,服務器返回206 Partial Content,若是if-Range字段值中的條件沒有獲得知足,則做爲正常處理返回 200 OK的所有資源。

Proxy-Authorization 用於用戶代理給代理服務器發送身份驗證的憑證

Proxy-Authorization: Basic YWxhZGRpbjpvcGVuc2VzYW1l
複製代碼

Range 用於只需獲取部分資源的範圍請求,字段值代表服務器資源的指定範圍

Range: <unit>=<range-start>-<range-end>, <range-start>-<range-end>
複製代碼

Referer 能夠根據Referer查看請求資源的是從哪一個頁面發起的

TE 告知服務器客戶端可以處理響應的傳輸編碼方式以及相對優先級

User-Agent 將建立請求的瀏覽器和用戶代理信息等名稱傳達給服務器

User-Agent: <product> / <product-version> <comment>
//<product> 產品識別碼
//<product-version>  產品版本號
//comment 0個或多個關於組成產品信息的註釋
複製代碼

響應首部字段

響應首部字段是由服務器端向客戶端返回響應報文中所使用的字段,用於補充響應的附加信息、服務器信息、以及對客戶端的附加要求信息。

Accept-Ranges 用於告知客戶端服務器可否處理範圍請求

Accept-Ranges: none | bytes  //
複製代碼

Age 能告知客戶端,源服務器在多久前建立了響應,字段值的單位爲秒。

ETag 它是一種將資源以字符串的形式作惟一標識性的方式,服務器會爲每份資源分配對應的ETag值,當資源更新時,ETag值也會更新。沒有特定的生成算法,一般使用資源最後修改時間戳的哈希值,或散列或版本號。 用處: 1.防止資源的同時更新而致使的相互覆蓋(空中碰撞); 2.緩存未更改的資源

Location 指定須要將頁面從新定向至的地址

Proxy-Authenticate 會把由代理服務器所要求的認證信息發送給客戶端。指定了獲取代理服務器上的資源訪問權限而採用的身份驗證方式。代理服務器對請求進行驗證,以便它進一步傳遞請求

Retry-After 告知客戶端應該在多久後能夠再次發起請求。主要配合狀態嗎503(Service Unavailable)響應。

Server 首部字段Server告知客戶端當前服務器上安裝的HTTP服務器應用程序的信息。

Vary 當代理服務器接收到帶有Vary首部字段指定獲取資源的請求時,若是使用的Accept-Language字段的值相同,那麼就直接從源服務器返回響應,反之,則須要先從源服務器獲取資源後才能做爲響應返回。

WWW-Authenticate 用於HTTP訪問認證。它會告知客戶端適用於訪問請求的URI所指定資源的認證方案(Basic 或是Digest);定義了何種驗證方式去獲取對資源的鏈接

實體首部字段

實體首部字段是包含在請求報文和響應報文中的實體部分所使用的首部,用於補充內容的更新時間與實體相關的信息。請求報文和響應報文中都含有的與實體相關的首部

ALlow 因爲枚舉資源所支持的HTTP方法的集合,當服務器接收到不支持的HTTP方法時,會返回405(Method Not Allowed )做爲響應返回,於此同時還會把全部能支持的HTTP方法寫入首部字段Allow返回。

Allow: GET, POST, HEAD
複製代碼

Content-Encoding 告知客戶端服務器對實體的主體部分選用的內容編碼方式。(內容編碼是指在不丟失實體信息的前提下所進行的壓縮)經常使用的有gzip、compress、deflate、 identify;

Content-Language 告知客戶端實體主體使用的天然語言

Content-Language: zh-CN
複製代碼

Content-Length 實體主體部分的大小(bites)

Content-Location 首部字段Content-Location給出與報文主體部分相對應的URI。和首部字段Location不一樣,Content-Location表示的是報文主體返回的資源對應的URI。

Content-MD5

Content-Range

Content-type 說明了實體主體部分的媒體類型,和首部字段Accept同樣,字段值用type/subtype 形式賦值

Expires 會將資源失效的日期告知客戶端,緩存服務器在接收到含有首部字段Expires的響應後,會以緩存來應答請求,在Expires字段值指定的時間以前,響應的副本會一直保存,當超過指定的時間後,緩存服務器在請求發送過來時,會轉向源服務器請求資源

Last-Modified 指明資源最後的修改時間

相關文章
相關標籤/搜索