HTTP網絡協議(三)

HTTP首部字段有四種類型:通用首部字段,請求首部字段,響應首部字段,實體首部字段。 
通用首部字段:css

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

請求首部字段:html

首部字段 說明
Accept 用戶代理的媒體類型
Accept-Charset 優先的字符集
Accept-Encoding 優先的內容編碼
Accept-Language 優先的語言
Authorization Web認證信息
Expect 期待服務器的特定行爲
From 用戶的電子郵件
Host 請求資源所在服務器
if-Match 比較實體標記(ETag)
if-Modified-Since 比較資源的更新時間
if-None-Match 比較實體標記(與if-Match相反)
if-Range 資源未更新時發送實體Byte的範圍請求
if-Unmodified-Since 比較資源的更新時間(與if-Modified-Since想法)
Max-Forwards 最大傳輸逐跳
Proxy-Authorization 代理服務器要求客戶端的認證信息
Range 實體的字節範圍請求
Refer 對請求中URI的原始獲取方
TE 傳輸編碼的優先級
User-Agent HTTP客戶端的信息

響應首部字段:算法

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

實體首部字段:瀏覽器

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

HTTP首部字段將定義成緩存代理和非緩存代理兩種類型: 
端到端(End-to-end Header):此類中的首部字段會轉發給請求/響應對應的最終接受目標,且必須在由緩存生成的響應中,另外規定它必須被轉發。 
逐跳首部(Hop-by-hop Header):此類中的首部只對單次轉發有效,會因經過緩存或代理而再也不轉發。如:Connection,Keep-Alive,Upgrade,Proxy-Authenticate,Proxy-Authorization等。 
當有多個指令參數時,多個指令之間可經過」,」分隔,例如首部字段Cache-Control: 
Cache-Control: private,max-age=0,no-cache 
Cache-Control指令一覽: 
緩存請求指令:緩存

指令 參數 說明
no-cache 強制向源服務器再次驗證
no-store 不緩存請求或響應的任何內容
max-age=[秒] 必需 響應的最大Age值
max-stale=[秒] 可省略 接受已過的響應
min-fresh=[秒] 必需 指望在指定時間內的響應仍有效
no-transform 代理不可更改媒體類型
only-if-cache 從緩存獲取資源
cache-extension - 新指令標記

緩存響應指令:安全

指令 參數 說明
public 可向任意方提供響應的緩存
private 可省略 僅向特定用戶返回響應
no-cache 可省略 緩存前必須先確認其有效性
no-store 不緩存請求或響應的任何內容
no-transform 代理不可更改媒體類型
msut-revalidate 可緩存但必須再向源服務器進行確認
proxy-revalidate 要求中間緩存服務器對緩存的響應有效性再進行確認
max-age=[秒] 必需 響應的最大Age值
s-maxage=[秒] 必需 公共緩存服務器響應的最大Age值
cache-extension - 新指令標記[token]

Connection首部字段有兩個做用:服務器

  • 控制再也不轉發給代理的首部字段,如:Connection:再也不轉發的首部字段名.
  • 管理持久化鏈接,HTTP/1.1默認是持久鏈接,若是想斷開鏈接,能夠用Connection: Close. 
    這裏寫圖片描述
    首部字段Upgrade用於檢測HTTP協議及其餘協議是否可以使用更高的版本進行通訊,其參數值能夠用來指定一個徹底不一樣的通訊協議,不過產生對象僅限於客戶端和鄰接服務器之間。 
    首部字段Warning來告知用戶一些與緩存相關的問題的警告,其格式:Warning:[警告碼][警告的主機:端口號][警告內容]([日期時間])。 
    警告碼:
警告碼 警告內容 說明
110 Response is stale(響應已過時) 代理返回已過時的資源
111 Revalidation failed(再驗證失敗) 代理再驗證資源有效性時失敗(服務器沒法到達等緣由)
112 Disconnection operation(斷開鏈接操做) 代理與互聯網鏈接被故意切斷
113 Heuristic expiration(試探性過時) 響應的使用其超過24小時(有效緩存的設定時間大於24小時的狀況下)
199 Miscellaneous warning(雜項警告) 任意的警告內容
214 Transformation applied(使用了轉換) 代理對內容編碼或媒體類型等執行了某些處理時
299 Miscellaneous persistent warning(持久雜項警告) 任意的警告內容

首部字段Accept能夠指定媒體類型以及優先級,如:Accept: text/html;q=0.9,text/css;q=0.3. 
常見幾種媒體類型: 
文件文本: 
text/html,text/plain,text/css,application/xhtml+xml,application/xml… 
圖片文件: 
image/jpeg,image/gif,image/png… 
視頻文件: 
video/mpeg,video/quicktime… 
應用程序使用的二進制文件: 
application/octet-stream,application/zip… 
若想要給Accept開頭的首部字段的參數增長優先級,可使用q=來額外表示,用分號(;)進行分隔,權重值q的範圍是0~1,默認權重爲1,權重越大就越優先。 
If-Match首部字段它會告知服務器匹配資源所用的實體標記ETag值,只有二者一致纔會執行請求,而ETag值會隨服務器資源更新而更新。 
If-Modified-Since首部字段指定的日期時間以後,若是請求的資源有更新則接受請求,沒有則返回304狀態碼。 
If-None-Match首部字段指定的標記值若與請求資源的ETag值不一致時,服務器就接受請求。 
If-Range首部字段指定的值如果跟ETag值一致時,那麼就根據範圍返回請求資源,不然返回全體請求資源(這至關於指定範圍無效)。 
If-Unmodified-Since首部字段告知請求資源在其字段指定的值時間以後,爲發生更新的狀況下,才能處理請求。 
Referer首部字段會告知服務器請求的原始資源的URI,其實就是從某個網站向服務器資源請求的URI,好比:你在百度URIwww.baidu.com點擊連接http://blog.csdn.NET/xuguoli_beyondboy跳轉到這個頁面,那麼Referer首部字段就是指定這個www.baidu.comURI。 
Age首部字段告知客戶端,源服務器在多久前建立了響應,單位爲秒,但若建立該響應的服務器是緩存服務器,Age就是指緩存後的響應再次發起認證到認證完成的時間值。 
Retry-After首部字段會告知客戶端應該在多久以後再次發送請求。 
Vary首部字段:從代理服務器接收到源服務器返回包含Vary指定項的響應以後,僅對請求中含有相同Vary指定首部字段的請求返回緩存,不然代理服務器需先從源服務器端獲取資源後才能做爲響應返回(即便對相同資源發起請求)。 
這裏寫圖片描述
首部字段WWW-Authenticate用於HTTP訪問認證,它會告知客戶端適用於訪問請求URI所指定資源的認證方案(Basic或Digest)和帶參數提示的質詢。 
Content-Loaction首部字段表示的是報文主體返回資源對應的URI。 
Content-MD5首部字段在於檢查報文主體在傳輸過程當中是否保持完整,以及確認傳輸到達,其過程以下: 
服務器對報文主體執行MD5算法得到的128位二進制數,再經過Base64編碼後將結果寫入Content-MD5字段值,爲確保報文的有效性,客戶端對報文主體再執行一次相同的MD5算法,計算出的值與Content-MD5首部字段的值相比較,便可判斷出報文主體的準確性。 
Expires首部字段:若是請求還在Expires字段值指定的時間以前,則會返回緩存的該資源,當超過其時間以後,發送來的請求將會轉向源服務器請求資源。 
Cookie首部字段:數據結構

首部字段 說明 首部類型
Set-Cookie 開始狀態管理所使用的Cookie信息 響應首部字段
Cookie 服務器接收到的Cookie信息 請求首部字段

Set-Cookie字段屬性:app

屬性 說明
NAME=VALUE 賦予Cookie的名稱和值(必需項 )
expires=DATE Cookie的有效期(若不明確指定則默認爲瀏覽器關閉前爲止)
path=PATH 將服務器上的文件目錄爲Cookie的使用對象(若不指定則默認爲文檔所在的文件目錄)
domain=域名 做爲Cookie使用對象的域名(若不指定則默認爲建立Cookie的服務器的域名)
Secure 僅在HTTPS安全通訊時纔會發送Cookie
HttpOnly 加以限制,使Cookie不能被JavaScript腳本訪問

X-Frame-Options首部字段用於控制網站內容在其餘Web網站的Frame標籤內的顯示問題,不過目的主要是爲了防止點擊劫持攻擊,其兩個屬性: 
DENT:拒絕 
SAMEORIGN:僅同源域名下的頁面匹配時許可,好比:當指定http:/hackr.jp/sample.html頁面爲SAMEORIGN時,那麼hackr .jp上全部的頁面的frame都被許可加載該頁面,而example.com等其餘域名的頁面就不行了。 
X-XSS-Protection首部字段是針對跨站腳本攻擊的一種對策,用於控制瀏覽器XSS防禦機制的開關,屬性值以下: 
0:將XSS過濾設置成無效狀態。 
1:將XSS過濾設置成有效狀態。 
DNT首部字段用來拒絕我的信息被收集,常表示拒絕被精準廣告追蹤的一種方法,屬性值以下: 
0:贊成被追蹤 
1:拒絕被追蹤 
P3P首部字段可用來保護用戶隱私。dom

相關文章
相關標籤/搜索