【前端 · 面試 】HTTP 總結(二)—— HTTP 消息 | 8月更文挑戰

最近我在作前端面試題總結系列,感興趣的朋友能夠添加關注,歡迎指正、交流。前端

爭取每一個知識點可以多總結一些,至少要作到在面試時,針對每一個知識點均可以侃起來,不至於啞火。git

前言

在上一篇文章《HTTP 概述》中咱們認識了 HTTP ,知道它是一個規範客戶端請求和服務端響應的應用層協議,今天,咱們來學習一下它裏面的另外一個重要概念——HTTP 消息。面試

HTTP 消息

HTTP 消息是服務器和客戶端之間交換數據的方式。編程

分類

HTTP 消息分爲兩類:瀏覽器

  • 客戶端請求消息(requests)—— 由客戶端發送用來觸發一個服務器上的動做。
  • 服務端響應消息(responses)—— 來自服務器的應答。

構成

HTTPMsgStructure2

典型的 HTTP 消息由如下四部分構成:安全

  • 起始行(start line) —— 一行起始行用於描述要執行的請求,或者是對應的狀態,成功或失敗。這個起始行老是單行的。
  • HTTP 頭(HTTP headers)—— 表示在 HTTP 請求或響應中的用來傳遞附加信息的字段,修改所傳遞的消息(或者消息主體)的語義,或者使其更加精確。
  • 空行(empty line) —— 空行指示全部關於請求的元數據已經發送完畢。
  • 數據體(body)—— 一個可選的包含請求相關數據的正文 (好比HTML表單內容), 或者響應相關的文檔。

請求消息和響應消息的構成大致相同。服務器

HTTP 頭字段

HTTP 頭字段(HTTP header fields)是指在超文本傳輸協議(HTTP)的請求和響應消息中的消息頭部分。markdown

它們定義了一個超文本傳輸協議事務中的操做參數。oop

HTTP 頭部字段能夠本身根據須要定義,所以可能在 Web 服務器和瀏覽器上發現非標準的頭字段。post

格式

HTTP 頭字段是在請求(request)或響應(response)行(一條消息的第一行內容)以後傳輸的。

協議頭的字段特色是:

  • 以明文的字符串格式傳輸
  • 是以冒號分隔的鍵名與鍵值對
  • 以回車(CR)加換行(LF)符號序列結尾
  • 協議頭部分的結尾以一個空白字段標識,也就是傳輸兩個連續的 CR + LF。

分類

HTTP 頭字段根據實際用途被分爲如下 4 種類型:

  • 通用頭字段(General Header Fields)
  • 請求頭字段(Request Header Fields)
  • 響應頭字段(Response Header Fields)
  • 實體頭字段(Response Header Fields)

通用頭字段

請求頭字段

響應頭字段

字段值

某些字段中能夠包含註釋內容(例如User-Agent、Server和Via字段中),這些註釋內容可由應用程序忽略。

不少字段的值中能夠包含帶有權重的質量(quality,常被簡稱爲Q)的鍵值對,指定的「重量」會在內容協商的過程當中使用。

大小限制

標準中沒有對每一個協議頭字段的名稱和值的大小設置任何限制,也沒有限制字段的個數。

然而,出於實際場景及安全性的考慮,大部分的服務器、客戶端和代理軟件都會實施一些限制。

例如,Apache 2.3服務器在默認狀況下限制每一個字段的大小不得超過8190字節,同時,單個請求中最多有100個頭字段。

總結

HTTP 消息分爲請求消息和響應消息,完整的消息由四部分組成。

HTTP 頭能夠分爲四類。

~

~ 本文完,感謝閱讀!

~

學習有趣的知識,結識有趣的朋友,塑造有趣的靈魂!

你們好,我是〖編程三昧〗的做者 隱逸王,個人公衆號是『編程三昧』,歡迎關注,但願你們多多指教!

你來,懷揣指望,我有墨香相迎! 你歸,不管得失,惟以餘韻相贈!

知識與技能並重,內力和外功兼修,理論和實踐兩手都要抓、兩手都要硬!

相關文章
相關標籤/搜索