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:再也不轉發的首部字段名
.Connection: Close
. 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.com
URI。
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