一、概述
HTTP 首部字段是構成 HTTP 封包的要素之一。在用戶端與伺服器之間以 HTTP 協定進行通信的過程中,無論是請求還是響應都會使用首部字段,它能起到傳遞額外重要資訊的作用。
使用首部字段是為了給浏覽器和伺服器提供封包主體大小、所使用的語言、認證資訊等内容。
HTTP/1.1 首部字段根據實際用途被分為以下 4 種類型:
- 通用首部字段( General Header Fields)
- 請求首部字段( Request Header Fields)
- 響應首部字段( Response Header Fields)
- 實體首部字段( Entity Header Fields)
二、通用首部字段
通用首部字段指的是請求封包和響應封包兩方都會使用的首部。
首部字段名 | 說明 |
---|---|
Cache-Control | 控制緩存的行為 |
Date | 建立封包的日期時間 |
Pragma | 封包指令,舊版本遺留字段,作為舊版本相容字段 |
Connection | 逐跳首部字段、控制不再轉發給代理的首部字段、管理持久連接配接 |
Trailer | 逐跳首部字段,封包末端的首部一覽 |
Transfer-Encoding | 逐跳首部字段,指定封包主體的傳輸編碼方式 |
Upgrade | 逐跳首部字段,更新為其他協定 |
Via | 代理伺服器的相關資訊 |
Warning | 錯誤通知 |
三、請求首部字段
請求首部字段指的是從用戶端向伺服器端發送請求封包時使用的首部。補充了請求的附加内容、用戶端資訊、響應内容相關優先級等資訊。
Accept | 使用者代理可處理的媒體類型 |
Accept-Charset | 可處理的優先的字元集 |
Accept-Encoding | 可處理的優先的内容編碼 |
Accept-Language | 可處理的優先的語言(自然語言) |
Authorization | 認證資訊 |
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 | 最大傳輸逐跳數,配合 TRACE 請求使用 |
Proxy-Authorization | 逐跳首部字段,代理伺服器要求用戶端的認證資訊 |
TE | 逐跳首部字段,傳輸編碼的優先級 |
Range | 實體的位元組範圍請求 |
Referer | 對請求中URI的原始擷取方 |
User-Agent | 請求的浏覽器和使用者代理名稱等資訊 |
Cookie | Cookie 資訊 |
DNT | Do Not Track,拒絕個人資訊被收集,表示拒絕被精準廣告追蹤的一種方法,0-同意 1-拒絕 |
四、響應首部字段
響應首部字段指的是從伺服器端向用戶端傳回響應封包時使用的首部。補充了響應的附加内容, 也會要求用戶端附加額外的内容資訊。
Accept-Ranges | 是否接受位元組範圍請求 |
Age | 源伺服器多久前建立了響應,機關為秒 |
ETag | 資源的比對資訊,唯一性辨別 |
Location | 令用戶端重定向至指定URI |
Proxy-Authenticate | 逐跳首部字段,代理伺服器對用戶端的認證資訊 |
WWW-Authenticate | 伺服器對用戶端的認證資訊 |
Retry-After | 告知用戶端應該多久之後再次發送請求 |
Server | 目前伺服器上安裝的 HTTP 伺服器應用程式的資訊 |
Vary | 對緩存進行控制,源伺服器會向代理伺服器傳達關于本地緩存使用方法的指令 |
Set-Cookie | 通知用戶端開始狀态管理所使用的Cookie資訊 |
X-Frame-Options | 用于控制網站内容在其他 Web 網站的 Frame 标簽内的顯示問題。 主要目的是為了防止點選劫持(clickjacking)攻擊,可設定 DENY 或 SAMEORIGIN |
X-XSS-Protection | 針對跨站腳本攻擊(XSS)的一種對策,用于控制浏覽器 XSS 防護機制的開關,0-關閉,1-打開 |
五、實體首部字段
實體首部字段指的是針對請求封包和響應封包的實體部分使用的首部。補充了資源内容更新時間等與實體有關的資訊。
Allow | 資源可支援的HTTP方法 |
Content-Encoding | 實體主體适用的編碼方式 |
Content-Language | 實體主體的自然語言 |
Content-Length | 實體主體的大小(機關:位元組) |
Content-Location | 封包主體傳回資源對應的 URI。Location 對應的是響應,而 Content-Location 對應的是要傳回的實體 |
Content-MD5 | 一串由 MD5 算法生成的值,其目的在于檢查封包主體在傳輸過程中是否保持完整,以及确認傳輸到達 |
Content-Range | 實體主體的位置範圍 |
Content-Type | 實體主體的媒體類型 |
Expires | 實體主體過期的日期時間,若不希望被緩存可設定成與 Date 值一緻 |
Last-Modified | 資源的最後修改日期時間 |
逐跳首部字段(Hop-by-hop Header)指的是隻對單次轉發有效, 會因通過緩存或代理而不再轉發。