天天看點

簡述 HTTP 首部字段.

一、概述

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 資源的最後修改日期時間
tips:

逐跳首部字段(Hop-by-hop Header)指的是隻對單次轉發有效, 會因通過緩存或代理而不再轉發。