HTTP 首部字段是構成 HTTP 報文的要素之一。在客戶端與服務器之間以 HTTP 協議進行通訊的過程當中,不管是請求仍是響應都會使用首部字段,它能起到傳遞額外重要信息的做用。html
使用首部字段是爲了給瀏覽器和服務器提供報文主體大小、所使用的語言、認證信息等內容。瀏覽器
HTTP 首部字段是由首部字段名和字段值構成的,中間用冒號「:」 分隔。
首部字段名: 字段值
例如,在 HTTP 首部中以 Content-Type 這個字段來表示報文主體的 對象類型。
Content-Type: text/html緩存
就以上述示例來看,首部字段名爲 Content-Type,字符串 text/html 是字段值。服務器
另外,字段值對應單個 HTTP 首部字段能夠有多個值,以下所示。
Keep-Alive: timeout=15, max=100spa
*若 HTTP 首部字段重複了會如何
當 HTTP 報文首部中出現了兩個或兩個以上具備相同首部字段名時會怎麼樣?這種狀況在規範內還沒有明確,根據瀏覽器內部處理邏輯的不一樣,結果可能並不一致。有些瀏覽器會優先處理第一次出現的首部字段,而有些則會優先處理最後出現的首部字段。3d
HTTP 首部字段根據實際用途被分爲如下 4 種類型。
通用首部字段(General Header Fields)
請求報文和響應報文兩方都會使用的首部。
請求首部字段(Request Header Fields)
從客戶端向服務器端發送請求報文時使用的首部。補充了請求的附加內容、客戶端信息、響應內容相關優先級等信息。
響應首部字段(Response Header Fields)
從服務器端向客戶端返回響應報文時使用的首部。補充了響應的附加內容,也會要求客戶端附加額外的內容信息。
實體首部字段(Entity Header Fields)
針對請求報文和響應報文的實體部分使用的首部。補充了資源內容更新時間等與實體有關的信息。代理
HTTP/1.1 規範定義了以下 47 種首部字段。htm
通用首部字段:對象
請求首部字段:blog
響應首部字段:
實體首部字段:
在 HTTP 協議通訊交互中使用到的首部字段,不限於 RFC2616 中定義的 47 種首部字段。還有 Cookie、Set-Cookie 和 Content-Disposition等在其餘 RFC 中定義的首部字段,它們的使用頻率也很高。
這些非正式的首部字段統一概括在 RFC4229 HTTP Header FieldRegistrations 中。
HTTP 首部字段將定義成緩存代理和非緩存代理的行爲,分紅 2 種類型。
端到端首部(End-to-end Header)
分在此類別中的首部會轉發給請求 / 響應對應的最終接收目標,且必須保存在由緩存生成的響應中,另外規定它必須被轉發。
逐跳首部(Hop-by-hop Header)
分在此類別中的首部只對單次轉發有效,會因經過緩存或代理而再也不轉發。HTTP/1.1 和以後版本中,若是要使用 hop-by-hop 首部,需提供 Connection 首部字段。
下面列舉了 HTTP/1.1 中的逐跳首部字段。除這 8 個首部字段以外,
其餘全部字段都屬於端到端首部。