HTTP學習筆記 HTTP報文

2021-06-27 15:05:59 字數 2196 閱讀 7868

如果說http是網際網路的信使,那麼http報文就是運送的包裹。所有的http程式都是通過互相傳送報文來完成工作的。本文將介紹http報文的流動方式,報文的組成部分,請求和響應報文之間的區別等。

http報文是在http應用程式之間傳送的資料塊,這些資料塊以文字形式存在,以描述了報文的內容及含義的元資訊開頭,後面跟著可選的資料部分。這些報文在客戶端、伺服器和**之間流動。一般來說,報文流根據流向引用以下三種術語:報文流入(inbound)向伺服器,工作完成之後,會流出(outbound)向客戶端或使用者agent**;不管是請求報文還是響應寶安溫,所有報文的接收者都在傳送者的下游(downstream),報文只會向下游流動。

報文由起始行、首部,以及可選的包含資料的主體三個部分組成。所有的http報文分為兩類:請求(request)報文和響應(response)報文,如下圖示例。前者會向web伺服器請求對資源進行一些操作,後者承載了狀態資訊和操作產生的所有結果資料,把結果返回給客戶端。

所有的http報文都以乙個起始行作為開始。請求報文的起始行又稱為請求行,說明了要做些什麼,響應報文的起始行又稱為響應行,說明了發生了什麼。以下是兩種請求行的基本格式:

// 請求行格式

<

method

>

<

request

-url

>

<

version

>

// 響應行格式

<

version

>

<

status

>

<

reason

-phrase

>

請求行的方法描述了伺服器應該執行的操作,請求url描述了要對哪個資源執行這個方法,http版本用來告知伺服器,客戶端使用的是哪個版本的http協議。響應行包含了報文使用的http版本、數字狀態嗎,以及描述操作狀態的文字形式的原因短語。所有這些欄位都由空格分隔。

http規範中定義了一組常用的請求方法,用來告知伺服器要做些什麼,如下所示:

如果一台伺服器要與htpp 1.1相容,只要為其資源實現get和head方法即可,這兩種方法被認為是安全的,它們產生的請求不會在伺服器上產生什麼結果(實際上,這是由web開發者決定的,完全可以使用get方法來提交乙個表單,但嚴重不建議這麼做!)。

http還允許定義http/1.1規範中沒有定義的擴充套件方法,這些方法為開發者提供了一種擴充套件http服務能力的手段。很可能大部分http應用程式都無法理解這些擴充套件方法,所以伺服器最好對擴充套件方法寬容一些。

每條響應報文都會包含乙個3位數字和可讀的狀態,用來告訴客戶端,伺服器發生了什麼事情。數字狀態碼便於程式處理差錯,原因短語更便於人們理解。狀態碼分為5類(括號中為已定義範圍):100~199為資訊提示(100~101);200~299為成功(200~206);300~399為重定向(300~305),用於告知客戶端使用替代位置來訪問資源;400~499為客戶端錯誤(400~415);500~599為伺服器錯誤(500~505)。限於篇幅下面只介紹常見的狀態碼,詳情參見http狀態碼維基百科

首部和方法配合工作,共同決定了客戶端和伺服器能做什麼事情。可以將首部分為5個主要型別,以下將分類列舉一些首部。

1、通用首部:客戶端和伺服器都可以使用的通用首部,提供了與報文相關的最基本的資訊。

2、請求首部:只在請求報文中有意義,用於說明是誰或什麼在傳送請求、請求源自何處,或客戶端的喜好及能力等。

有時客戶端希望為請求加上某些限制,要求伺服器在對請求進行響應之前,確保某個條件為真,則可以新增條件請求首部,如expect(允許客戶端列出某請求所要求的伺服器行為)、if-match(若實體標記相匹配,則獲取這份文件)、if-modified-since(除非在某個指定日期之後資源被修改過,否則限制該請求)等等。

http本身就支援一種對請求進行質詢/響應的認證機制,這樣可以使事務稍微安全一些。因此有安全請求首部,如authorization(客戶端提供給伺服器的對其自身進行認證的資料)、cookie(這個不是真正的安全首部,但卻是隱含了安全功能)。

3、響應首部:為客戶端提供了一些額外資訊,比如誰在傳送響應、響應者的功能、其它一些特殊指令等

4、實體首部:用來描述http報文的負荷,提供了有關實體及其內容的大量資訊,可以告知報文的接收者它在對什麼進行處理

參考文獻:人民郵電出版社《http權威指南》第3章

HTTP學習筆記 HTTP報文資訊

http報文本身由多行資料構成的字串文字。大致分為報文首部和報文主體兩塊,由 cr lf 來劃分。通常並不一定要有報文主體。包含用於請求的方法,請求的uri和http版本。包含表明響應結果的狀態碼,原因短語和http版本。包含表示請求和響應的各種條件和屬性的各類首部。通用首部,請求首部,響應首部,實...

http學習筆記(四) HTTP報文

http報文是在 應用程式之間傳送的資料塊,這些資料塊以一些文字形式的元資訊。請求報文從客戶端流入伺服器,向伺服器請求資料,伺服器響應請求,響應報文從伺服器流出,回到客戶端。這就構成了乙個事務.報文總是向下流動,所有的報文的傳送者都在上游,所有的報文接受者都在下游。所以無論是瀏覽器還是伺服器,他們都...

《HTTP權威指南》學習筆記 HTTP報文

http 網際網路的信使 http報文 信使用來搬東西的包裹 http報文 http應用程式之間傳送的資料塊 組成 元資訊開頭 文字形式,描述報文的內容和含義 可選的資料部分。三部分組成 報文的語法 兩類 請求報文和響應報文 請求報文格式 響應報文格式 起始行 請求行 說明要做些什麼 響應行 說明發...