圖解HTTP之HTTP首部(六)
HTTP 協議的請求和響應報文中必定包含 HTTP 首部。首部內容為客戶端和伺服器分別處理請求和響應提供所需要的資訊。對於客戶端使用者來說,這些資訊中的大部分內容都無須親自檢視。
HTTP請求報文由方法、URI、HTTP版本、HTTP首部欄位構成。
HTTP響應報文由HTTP版本、狀態碼(數字和原因短語)、HTTP首部構成。
HTTP首部欄位是構成HTTP報文的要素之一。當HTTP報文首部中出現兩個或兩個以上具有相同首部欄位名時,會根據瀏覽器不同,結果可能不一致。
HTTP 首部欄位是由首部欄位名和欄位值構成的,中間用冒號“:” 分隔。
HTTP 首部欄位根據實際用途被分為以下4種類型。
-
通用首部欄位(General Header Fields)
-
請求首部欄位(Request Header Fields)
-
響應首部欄位(Response Header Fields)
-
實體首部欄位(Entity Header Fields)
HTTP首部欄位將定義成快取代理和非快取代理的行為,分成2種類型。
端到端首部(End-to-end Header)分在此類別中的首部會轉發給請求/響應對應的最終接收目標,必須儲存在由快取生成的響應中,必須被轉發。
逐跳首部(Hop-by-hop Header)分在此類別中的首部只對單次轉發有效,會因通過快取或代理而不再轉發。HTTP/1.1 和之後版本中,如果要使用 hop-by-hop 首部,需提供 Connection首部欄位。
Connection
Keep-Alive
Proxy-Authenticate
Proxy-Authorization
Trailer
TE
Transfer-Encoding
Upgrade
以上除這 8個首部欄位之外,其他所有欄位都屬於端到端首部。
HTTP/1.1 通用首部欄位
通用首部欄位是指,請求報文和響應報文雙方都會使用的首部。
Cache-Control 控制快取的行為
Connection 逐跳首部、連線的管理
Date 建立報文的日期時間
Pragma 報文指令
Trailer 報文末端的首部一覽
Transfer-Encoding 指定報文主體的傳輸編碼方式
Upgrade 升級為其他協議
Via 代理伺服器的相關資訊
Warning 錯誤通知
請求首部欄位
請求首部欄位是從客戶端往伺服器端傳送請求報文中所使用的欄位,用於補充請求的附加資訊、客戶端資訊、對響應內容相關的優先順序等內容。
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 實體的位元組範圍請求
Referer 對請求中 URI 的原始獲取方
TE 傳輸編碼的優先順序
User-Agent HTTP 客戶端程式的資訊
響應首部欄位
響應首部欄位是由伺服器端向客戶端返回響應報文中所使用的欄位,用於補充響應的附加資訊、伺服器資訊,以及對客戶端的附加要求等資訊。
Accept-Ranges 是否接受位元組範圍請求
Age 推算資源建立經過時間
ETag 資源的匹配資訊
Location 令客戶端重定向至指定URI
Proxy-Authenticate 代理伺服器對客戶端的認證資訊
Retry-After 對再次發起請求的時機要求
Server HTTP伺服器的安裝資訊
Vary 代理伺服器快取的管理資訊
WWW-Authenticate 伺服器對客戶端的認證資訊
實體首部欄位
實體首部欄位是包含在請求報文和響應報文中的實體部分所使用的首部,用於補充內容的更新時間等與實體相關的資訊。
Allow 資源可支援的HTTP方法
Content-Encoding 實體主體適用的編碼方式
Content-Language 實體主體的自然語言
Content-Length 實體主體的大小(單位:位元組)
Content-Location 替代對應資源的URI
Content-MD5 實體主體的報文摘要
Content-Range 實體主體的位置範圍
Content-Type 實體主體的媒體型別
Expires 實體主體過期的日期時間
Last-Modified 資源的最後修改日期時間
為Cookie服務的首部欄位
Cookie 的規格標準文件有4種。
Set-Cookie 開始狀態管理所使用的Cookie資訊 響應首部欄位
Set-Cookie: status=enable; expires=Tue, 05 Jul 2011 07:26:31 GMT; pat
Set-Cookie 欄位的屬性
-
NAME=VALUE 賦予 Cookie 的名稱和其值(必需項)
-
expires=DATE Cookie 的有效期(若不明確指定則預設為瀏覽器關閉前為止)
-
path=PATH 將伺服器上的檔案目錄作為Cookie的適用物件(若不指定則預設為文件所在的檔案目錄)
-
domain=域名 作為 Cookie 適用物件的域名 (若不指定則預設為建立 Cookie的伺服器的域名)
-
Secure 僅在 HTTPS 安全通訊時才會傳送 Cookie
-
HttpOnly 加以限制,使 Cookie 不能被 JavaScript 指令碼訪問
Cookie 伺服器接收到的Cookie資訊 請求首部欄位
-
Cookie: status=enable
其他首部欄位
X-Frame-Options響應首部 防止點選劫持 DENY:拒絕 SAMEORIGIN:僅同源域名下的頁面匹配時許可。
X-XSS-Protection響應首部 針對XSS 控制開關 0:將 XSS 過濾設定成無效狀態 1:將 XSS 過濾設定成有效狀態
DNT請求首部 拒絕個人資訊被收集0 :同意被追蹤 1 :拒絕被追蹤
P3P響應首部 通過利用 P3P(The Platform forPrivacy Preferences,線上隱私偏好平臺)技術,可以讓 Web 網站上的個人隱私變成一種僅供程式可理解的形式,以達到保護使用者隱私的目的。
要進行 P3P 的設定,需按以下操作步驟進行。
步驟 1:建立 P3P 隱私
步驟 2:建立 P3P 隱私對照檔案後,儲存命名在 /w3c/p3p.xml
步驟 3:從 P3P 隱私中新建 Compact policies 後,輸出到 HTTP 響應中