1. 程式人生 > >《圖解http》讀書筆記(二)

《圖解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