1. 程式人生 > >圖解HTTP之HTTP首部(六)

圖解HTTP之HTTP首部(六)

HTTP 協議的請求和響應報文中必定包含 HTTP 首部。首部內容為客戶端和伺服器分別處理請求和響應提供所需要的資訊。對於客戶端使用者來說,這些資訊中的大部分內容都無須親自檢視。

HTTP請求報文由方法、URI、HTTP版本、HTTP首部欄位構成。

HTTP響應報文由HTTP版本、狀態碼(數字和原因短語)、HTTP首部構成。

HTTP首部欄位是構成HTTP報文的要素之一。當HTTP報文首部中出現兩個或兩個以上具有相同首部欄位名時,會根據瀏覽器不同,結果可能不一致。

HTTP 首部欄位是由首部欄位名和欄位值構成的,中間用冒號“:” 分隔。

HTTP 首部欄位根據實際用途被分為以下4種類型。

  1. 通用首部欄位(General Header Fields)

  2. 請求首部欄位(Request Header Fields)

  3. 響應首部欄位(Response Header Fields)

  4. 實體首部欄位(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 響應中