《圖解http》讀書筆記(二)
第六章 HTTP首部欄位
通用首部欄位
1.Cache-Control
請求指令:(請求頭裡面帶Cache-Control時的指令)
指令 | 引數 | 說明 |
no-cache | 無 | 強制向源伺服器再次驗證 |
no-store |
無 | 不快取請求或響應的任何內容 |
max-age=[秒] | 必須 | Cache-Control:max-age=600 //600s即10分鐘,則表示如果快取超過10分鐘需要再去去向伺服器請求,未超過直接使用快取 |
max-stale | 可省略 | 接收過期的響應。無引數值則客戶端永遠接收響應;設定引數值,則處於max-stale指定時間內,客戶端也接收響應 |
min-fresh=[秒] | 必須 | min-fresh=60s 快取在60s內過期,則不可作為響應返回 |
no-transform | 無 | 代理不可更改實體主體的媒體型別 |
only-if-cached | 無 | 從快取獲取資源。 快取伺服器不會向源伺服器發請求。如果快取伺服器無資源,則返回504 |
cache-extension | - |
新指令標記 |
響應指令:(響應頭裡面帶Cache-Control時的指令)
指令 | 引數 | 說明 |
public | 無 | 可向任意方提供響應的快取 |
private | 可省略 | 僅向特定使用者返回響應 |
no-cache | 可省略 | 快取前必須確認資源有效性; no-cache:Location,如果no-cache指定了具體的引數值,location不能使用快取 |
no-store | 無 | 不快取請求或響應的任一部分 |
no-transform | 無 | 代理不可更改實體主體的媒體型別 |
must-revalidate | 無 | 快取伺服器必須再次向源伺服器驗證,如果無法聯通源伺服器,則返回504狀態碼 |
proxy-revalidate |
|
再次驗證資源的有效性 |
max-age=[秒] |
必須 | Cache-Control:max-age=600 //600s即10分鐘,10分鐘內快取伺服器無需向伺服器去確認 |
s-maxage=[秒] | 必須 | 與max-age功能相同,不同的是s-maxage只適用於供多位使用者使用的公共快取伺服器 |
cache-extension | - |
新指令標記 |
2、Connection
|
引數 | 說明 |
Connection |
|
控制代理不再轉發的首部欄位 例如:Connection:Upgrade ,代理轉發請求時會刪除首部欄位Upgrade再轉發請求 |
Connection |
Keep-Alive |
長連線,(http1.1預設都是長連線) 客戶端傳送Connection:Keep-Alive 伺服器端會加上Keep-Alive欄位返回響應,像這樣: Keep-Alive:timeout=10,max=500 Connection:Keep-Alive |
|
Close |
伺服器端明確想斷開連線 |
通用首部欄位 | 引數 | 說明 |
Date |
Tue,03 Jul 2014 04:40:59 GMT 這種日期時間格式 |
建立http報文的日期和時間 |
Pragma |
no-cache |
1.0的向後相容,不返回快取的資源 和Cache-Control:no-cache的意思相同,為了相容,通常會寫成這樣: Cache-Control:no-cache Pragma: no-cache |
Trailer |
|
報文主體後記錄了哪些首部欄位 |
Tranfer-Encoding |
chunked/compress/deflate/gzip/identity |
傳輸報文主體時採用的編碼方式 |
Upgrade |
例如:TLS/1.0 | 監測協議是否可使用更高版本 注:Upgrade首部欄位產生的Upgrade物件僅限於客戶端和臨接伺服器之間,所以使用時,要加上Connection:Upgrade 。(即再次轉發時,刪除Upgrade欄位) |
Via |
|
追蹤客戶端與伺服器之間報文的傳輸路徑。報文在經過代理或閘道器時,會先在首部欄位Via中附加該伺服器的資訊再進行轉發 |
Warning |
[警告碼] [警告的主機:埠號] “[警告內容]” ([日期時間]) |
與快取相關的警告 |
請求首部欄位
請求首部欄位 | 引數 | 說明 |
Accept |
例如: text/html,q=0.3,text/plain | 使用者代理可處理的媒體型別和優先順序 常見的媒體型別: 文字檔案:text/html,text/plain, text/css … 圖片:image/jpeg,image/png... 二進位制檔案: application/octet-stream |
Accept-Charset |
|
使用者代理支援的字符集以及優先順序 |
Accept-Encoding | gzip/deflate/compress等 |
使用者代理支援的內容編碼和優先順序 |
Accept-Language |
例如:zh-cn,zh;q=0.7,en-us,en;q=0.3 |
使用者代理能夠處理的自然語言集合優先順序 |
Authorization |
|
使用者代理的認證資訊 |
Expect |
例如100-continue | 使用者代理期望的某種特定行為, 伺服器無法理解改引數值而導致錯誤時,返回417 |
From |
|
使用者的電子郵箱 |
Host |
|
主機名和埠號; http1.1規範內唯一一個必須包含的請求首部欄位 |
If-Match |
string型別 |
If-Match === ETag時正常處理請求,否則返回412 |
If-Modified-Since |
日期格式 | 詢問伺服器該時間之後,所請求的資源是否更新,更新則返回新的資源,反之,返回304 他的值來源於伺服器端返回的Last-Modified |
If-None-Match |
string型別 |
與If-Match作用相反,當If-None-Match不等於ETag時,處理請求 |
If-Range |
string型別 |
If-Range的值與ETag或時間一致時,作為範圍請求處理,否則返回全部資源 |
If-UnModified-Since |
日期格式 | 與If-Modified-Since作用相反,當資源未更新,處理請求,否則返回412 |
Max-Forwards |
number型別 |
可經過的伺服器的最大數目 |
Proxy-Authorization |
|
伺服器認證所需資訊 |
Range |
例如:bytes=5001-10000 | 範圍資源請求 |
Referer |
url,例如:http://www.hacke.jp/ | 請求是從哪個web頁面發起的 |
TE |
例如:gzip,deflate;q=0.5 | 客戶端能夠處理的傳輸編碼方式和相對優先順序 |
User-Agent |
|
建立請求的瀏覽器和使用者代理名稱等資訊 |
響應首部欄位
響應首部欄位 | 引數 | 說明 |
Accept-Ranges |
bytes/none | 伺服器端可處理範圍請求/不可處理範圍請求 |
Age=[秒] |
number型別 | 源伺服器在多久前建立了響應;如果是快取伺服器,則Age值為快取伺服器發起認證到認證完成的時間。 |
ETag |
|
實體唯一性標識。 強ETag:實體發生任何細微的改變都會更新ETag; 弱ETag: 資源發生根本改變時更新ETag |
Location |
|
引導訪問某個與請求URI位置不同的資源, 該欄位會3xx的響應,提供重定向的URI,幾乎所有的瀏覽器在接收到包含Location的響應後,都會強制性的對已提示的重定向的資源進行訪問。 |
Proxy-Authenticate |
|
把由代理伺服器所要求的認證資訊發給客戶端(該認證發生在客戶端與代理之間) |
Retry-After |
number或者日期 | 告知客戶端多久後再發請求,欄位值可為日期時間或秒數。 主要配合503 和3xx一起使用 |
Server |
|
告知客戶端當前伺服器上安裝的http伺服器應用程式資訊 |
Vary | 欄位 | 例如:源伺服器返回給代理伺服器的首部欄位包含Vary:Accept-Language ,則客戶端請求中,Vary欄位值為Accept-Lanuage時,代理伺服器才返回響應,否則像源伺服器發起請求 |
WWW-Authenticate |
|
使用者http訪問認證,告知客戶端適用於訪問請求URI所指定資源的認證方案。 |
實體首部欄位
實體首部欄位 | 引數 | 說明 |
Allow |
HTTP的方法,例如GET,POST等 |
告知客戶端能支援請求資源的所有的HTTP方法 |
Content-Encoding |
|
告知客戶端伺服器對實體的主體部分選用的內容編碼方式 |
Content-Language |
|
告知客戶端,實體主體使用的自然語言 |
Content-Length |
|
實體主體的大小,單位是位元組 |
Content-Location |
URI |
報文主體部分對應的URI |
Content-MD5 |
一串由MD5演算法生成的值 | 檢查報文主體在傳輸過程中是否保持完整 |
Content-Range |
例如:bytes 5001-10000/10000 | 返回的實體的哪個部分符合範圍請求 |
Content-Type |
|
實體主體內物件的媒體型別 |
Expires | 日期型別 | 資源失效日期 |
Last-Modified |
日期型別 | 資源最後修改時間 精確到秒 |
Set-Cookie |
|
伺服器端返回的Cookie |
Cookie |
|
客戶端請求傳送的Cookie |