響應首部字段
響應首部字段是由服務器端向客戶端返回響應報文中所使用的字段,用於補充響應的附加信息、服務器信息,以及對客戶端的附加要求等信息。
Accept-Ranges
Accept-Ranges: bytes
首部字段 Accept-Ranges 是用來告知客戶端服務器是否能處理範圍請求,以指定獲取服務器端某個部分的資源。
可指定的字段值有兩種,可處理範圍請求時指定其爲 bytes,反之則指定其爲 none。
Age
Age: 600
首部字段 Age 能告知客戶端,源服務器在多久前創建了響應。字段值的單位爲秒。
若創建該響應的服務器是緩存服務器,Age 值是指緩存後的響應再次發起認證到認證完成的時間值。代理創建響應時必須加上首部字段 Age。
ETag
ETag: “82e22293907ce725faf67773957acd12”
首部字段 ETag 能告知客戶端實體標識。它是一種可將資源以字符串形式做唯一性標識的方式。服務器會爲每份資源分配對應的 ETag 值。
另外,當資源更新時,ETag 值也需要更新。生成 ETag 值時,並沒有統一的算法規則,而僅僅是由服務器來分配。
資源被緩存時,就會被分配唯一性標識。例如,當使用中文版的瀏覽器訪問 http://www.google.com/ 時,就會返回中文版對應的資源,而使用英文版的瀏覽器訪問時,則會返回英文版對應的資源。兩者的 URI 是相同的,所以僅憑 URI 指定緩存的資源是相當困難的。若在下載過程中出現連接中斷、再連接的情況,都會依照 ETag 值來指定資源。
注意:
強 ETag 值和弱 Tag 值
ETag 中有強 ETag 值和弱 ETag 值之分。
ETag: “usagi-1234”
ETag: W/”usagi-1234”
Location
Location: http://www.usagidesign.jp/sample.html
使用首部字段 Location 可以將響應接收方引導至某個與請求 URI 位置不同的資源。
基本上,該字段會配合 3xx :Redirection 的響應,提供重定向的 URI。
幾乎所有的瀏覽器在接收到包含首部字段 Location 的響應後,都會強制性地嘗試對已提示的重定向資源的訪問。
Proxy-Authenticate
Proxy-Authenticate: Basic realm=”Usagidesign Auth”
首部字段 Proxy-Authenticate 會把由代理服務器所要求的認證信息發送給客戶端。
它與客戶端和服務器之間的 HTTP 訪問認證的行爲相似,不同之處在於其認證行爲是在客戶端與代理之間進行的。而客戶端與服務器之間進行認證時,首部字段 WWW-Authorization 有着相同的作用。有關 HTTP 訪問認證,後面的章節會再進行詳盡闡述。
Retry-After
Retry-After: 120
首部字段 Retry-After 告知客戶端應該在多久之後再次發送請求。主要配合狀態碼 503 Service Unavailable 響應,或 3xx Redirect 響應一起使用。
字段值可以指定爲具體的日期時間(Wed, 04 Jul 2012 06:34:24 GMT 等格式),也可以是創建響應後的秒數。
Server
Server: Apache/2.2.17 (Unix)
首部字段 Server 告知客戶端當前服務器上安裝的 HTTP 服務器應用程序的信息。不單單會標出服務器上的軟件應用名稱,還有可能包括版本號和安裝時啓用的可選項。
Server: Apache/2.2.6 (Unix) PHP/5.2.5
Vary
Vary: Accept-Language
首部字段 Vary 可對緩存進行控制。源服務器會向代理服務器傳達關於本地緩存使用方法的命令。
從代理服務器接收到源服務器返回包含 Vary 指定項的響應之後,若再要進行緩存,僅對請求中含有相同 Vary 指定首部字段的請求返回緩存。即使對相同資源發起請求,但由於 Vary 指定的首部字段不相同,因此必須要從源服務器重新獲取資源。
WWW-Authenticate
WWW-Authenticate: Basic realm=”Usagidesign Auth”
首部字段 WWW-Authenticate 用於 HTTP 訪問認證。它會告知客戶端適用於訪問請求 URI 所指定資源的認證方案(Basic 或是 Digest)和帶參數提示的質詢(challenge)。狀態碼 401 Unauthorized 響應中,肯定帶有首部字段 WWW-Authenticate。
上述示例中,realm 字段的字符串是爲了辨別請求 URI 指定資源所受到的保護策略。