Http 基礎 之 報文

報文流web

http 報文是在 Http 應用程序之間發送的數據塊。這些數據塊以一些文本形式的元信息(meta-information)開頭,這些信息描述了報文的內容及含義,後面跟着可選的數據部分。這些報文在客戶端、服務器和代理之間流動。術語"流入"、「流出」、「上游」及「下游」都是用來描述報文方向的。服務器

http 報文會像河水同樣流動,無論是請求報文仍是響應報文,全部報文都會向下遊流動。全部報文的發送者都在接收者的上游。post

報文的組成部分url

Http 報文是簡單的格式化數據塊。每條報文都包含一條來自客戶端的請求,或者一條來自服務器的響應。有三部分組成:對報文進行描述的起始行(start line)包含屬性的首部(header)塊 以及 可選的 包含數據的 主體(body)部分。spa

起始行代理

起始行和首部就是由行分隔的 ASCII 文本,每行都以一個由兩個字符組成的行終止序列做爲結束。實體的主體或者報文的主體 是 一個可選的數據塊,能夠包含文本或者二進制,能夠爲 空。code

全部的 HTTP 報文都以一個起始行做爲開始,請求報文的起始行說明了要作些什麼,響應報文的起始行說明發生了什麼。orm

請求報文的起始行又稱之爲請求行,包含了一個方法和一個請求的 url,這個方法描述了服務器應該執行的操做,請求url 描述了 要對 哪一個資源執行 這個方法。請求行中還包含了 http 的版本,用來告知服務器,客戶端使用的是哪一種 http。資源

響應報文承載了狀態信息和操做產生的全部結果數據,將其返回給客戶端。響應報文的起始行,又稱之爲響應行,包含了響應報文使用的 http 版本、數字狀態碼,以及描述操做狀態的文本形式的緣由短語。文檔

全部的 http 報文均可以分爲 兩類:請求報文(request message) 和 響應報文(response message)。請求報文會向 web 服務器請求一個動做,響應報文會將請求的結果返回客戶端。

請求報文格式:

<method> <request-url> <version> <headers> <entity-body>

響應報文格式:(注意,只有起始行的語法會有所不一樣)

<version> <status> <reason-phrase><headers> <entity-body>

方法(method)

客戶端但願服務器對資源執行的動做。eg: get、head 或者 post。

GET  :  從服務器獲取一份文檔;
HEAD :   只從服務器獲取文檔的首部;
POST  :   向服務器發送須要處理的數據;
PUT  :   將請求的主體部分存儲在服務器上;
TRACE :  對可能通過代理服務器傳送到服務器上去的報文進行追蹤;
OPTIONS :  決定能夠在服務器上執行哪些方法;
DELETE  :   從服務器上刪除一份文檔;

請求url(request-url)

命名了所請求資源或者url 路徑組件的完整 url。

版本(version)

報文所使用的 http 版本,格式 如: HTTP/<major>.<minor>,major 主版本號,minor 次版本號,都爲整數。

狀態碼(status-code)

狀態碼是在每條響應報文的起始行中返回的,會返回一個數字狀態,通常是三位數,這三位數字描述了請求過程當中所發生的狀況。每一個狀態碼的第一位數字都用於描述狀態的通常類別(「成功」、「出錯」等)。

緣由短語(reason-phrase)

緣由短語和狀態碼是成對出現的,是響應起始行中的最後一個組件,爲狀態碼提供了文本形式的解釋,即以短語文本描述 數字狀態碼。

首部(header)

能夠有 0個 或者 多個首部,每一個首部 都包含一個名字,後面跟着一個冒號(:),而後跟着一個空格,接着跟着一個值 和換行。

實體的主體部分(entity-body)

實體的主體是 http 報文的負荷,就是 http 要傳輸的內容。實體的主體部分包含一個由任意數據組成的數據塊。並非全部的報文都包含實體的主體部分。

相關文章
相關標籤/搜索