HTTP協議——HTTP響應首部
響應首部欄位是由伺服器端向客戶端返回響應報文中所使用的欄位,用於補充響應的附加資訊、伺服器資訊,以及對客戶端的附加要求等資訊。這些首部有助於客戶端處理響應,並在將來發起更好的請求。
首部欄位名 | 說明 |
Accept-Ranges | 是否接受位元組範圍請求 |
Age | 推算資源建立經過時間 |
ETag | 資源的匹配資訊 |
Location | 令客戶端重定向至指定URI |
Proxy-Authorization | 代理伺服器對客戶端的認證資訊 |
Retry-After | 對再次發起請求的時機要求 |
Server | HTTP伺服器的安裝資訊 |
Vary | 代理伺服器快取的管理資訊 |
WWW-Authenticate | 伺服器對客戶端的認證資訊 |
1、Accpet-Ranges
Accept-Ranges:bytes
首部欄位Accept-Ranges是用來告知客戶端伺服器是否能處理範圍請求,以指定獲取伺服器端某個部分的資源。
可指定的欄位值有兩種個,可處理範圍請求時指定其為bytes,反之則為none。
2、Age
首部欄位Age能告知客戶端,源伺服器在多久前建立了響應。欄位值的單位為秒。
若建立該響應的伺服器是快取伺服器,Age值是指快取後的響應再次發起認證到認證完成的時間值。代理建立響應時必須加上首部欄位Age。
3、ETag
首部欄位ETag能告知客戶端實體標識。它是一種可將資源以字串形式做唯一性標識的方式。伺服器會為每份資源分配對應的ETag值。另外,當資源更新時,ETag值也需要更新。生成ETage值時,並沒有統一的演算法規則,而僅僅是由伺服器來分配。資源被快取,就會被分配唯一性標識。當使用中文版的瀏覽器訪問 http://www.google.com/ 時,就會返回中文版對應的資源,而使用英文版的瀏覽器訪問時,則會返回英文版對應的資源。兩者的URI 是相同的,所以僅憑 URI 指定快取的資源是相當困難的。若在下載過程中出現連線中斷、再連線的情況,都會依照 ETag 值來指定資源。
ETag 中有強 ETag 值和弱 ETag 值之分。強 ETag 值,不論實體發生多麼細微的變化都會改變其值。弱 ETag 值只用於提示資源是否相同。只有資源發生了根本改變,產生差異時才會改變 ETag 值。這時,會在欄位值最開始處附加 W/。
4、Location
5、Proxy-Authenticate
首部欄位 Proxy-Authenticate 會把由代理伺服器所要求的認證資訊傳送給客戶端。它與客戶端和伺服器之間的 HTTP 訪問認證的行為相似,不同之處在於其認證行為是在客戶端與代理之間進行的。而客戶端與伺服器之間進行認證時,首部欄位 WWW-Authorization 有著相同的作用。6、Retry-After
首部欄位 Retry-After 告知客戶端應該在多久之後再次傳送請求。主要配合狀態碼 503 Service Unavailable 響應,或 3xx Redirect 響應一起使用。欄位值可以指定為具體的日期時間(Wed, 04 Jul 2012 06:34:24GMT 等格式),也可以是建立響應後的秒數。
7、Server
首部欄位 Server 告知客戶端當前伺服器上安裝的 HTTP 伺服器應用程式的資訊。不單單會標出伺服器上的軟體應用名稱,還有可能包括版本號和安裝時啟用的可選項。Server: Apache/2.2.6 (Unix) PHP/5.2.5
8、Vary
當代理伺服器接收到帶有 Vary 首部欄位指定獲取資源的請求時,如果使用的 Accept-Language 欄位的值相同,那麼就直接從快取返回響應。反之,則需要先從源伺服器端獲取資源後才能作為響應返回
Vary: Accept-Language
首部欄位 Vary 可對快取進行控制。源伺服器會向代理伺服器傳達關於本地快取使用方法的命令。 從代理伺服器接收到源伺服器返回包含 Vary 指定項的響應之後,若再要進行快取,僅對請求中含有相同 Vary 指定首部欄位的請求返回快取。即使對相同資源發起請求,但由於 Vary 指定的首部欄位不相同,因此必須要從源伺服器重新獲取資源。