一、HTTP報文分類:請求報文和響應報文
請求報文會向Web服務器請求一個動作,響應報文會將請求的結果返回給客戶端
請求報文格式:
<method> <request-URL> <version> 這一行稱為:請求行或請求的起始行
<header>
<entity-body>
響應報文格式:
<version> <status> <reson-phrase> 這一行稱為:響應行或響應的起始行
<header>
<entity-body>
二、下面是對各部分的描述:
-
方法(method)
客戶端希望服務器對資源執行的動作。是一個單獨的詞,如GET、POST
-
請求URL(request-URL)
所請求資源,或者URL路徑組件的完整URL
-
版本(version)
報文所使用的HTTP版本,格式:HTTP/<major>.<minor>
-
狀態碼(status-code)
描述請求過程中發生的情況。每個狀態碼的第一位數字用於描述狀態的一般類別(成功、出錯等)
-
原因短語(reson-phrase)
數字狀態碼的可讀版本(描述操作狀態的文本形式的原因短語)
-
首部(header)
可以有零個或多個首部,每個首部都包含一個名字,后面跟着一個冒號(:),然后是一個可選的空格,接着是一個值,最后是一個CRLF。首部是由一個空行(CRLF)結束的,表示了首部列表的結束和實體部分的開始。
首部字段向請求和響應報文中添加了一些附加信息。
本質上來說,它們只是一些名/值對的列表。
首部的分類:
1)通用首部:既可出現在請求報文中,也可出現在響應報文中。
比如Date首部就是一個通用首部,每一端都可以它來說明構建報文的時間和日期:
Date: Tue, 3 Oct 1974 02:16:00 GMT
2)請求首部:提供更多有關請求的信息,請求報文特有的。為服務器提供了一些額外信息,比如客戶端希望接收什么類型的數據。例如,Accept首部就是用來告知
服務器客戶端會接受與期請求相符的任意媒體類型:
Accept: */*
3)響應首部:提供更多有關響應的信息,以便為客戶端提供信息(如,客戶端在與哪種類型的服務器進行交互)。例如,Server首部就是用來告知客戶端它在與一個
版本 1.0 的 Tiki-Hut 服務器進行交互:
Server: Tiki-Hut /1.0
4)實體首部:描述主體的長度和內容,或者資源本身。如,可以用實體首部來說明實體主體部分的數據類型。如Content-Type首部告知應用程序,數據是以iso-latin-1
字符集表示的HTML文檔:
Content-type: text/html; charset=iso-latin-1
5)擴展首部:規范中沒有定義的新首部,非標准的首部,由應用程序開發者創建,但還未添加到已批准的HTTP規范中。
-
實體的主體部分(entity-body)
包含一個由任意數據組成的數據塊。並不是所有的報文都包含實體的主體報文,有時,報文只是以一個CRLF結束。
實體的主體是HTTP報文的負荷,就是HTTP要傳輸的內容。
HTTP報文可以承載很多類型的數字數據,如圖片、視頻、HTML文檔、軟件應用程序、信息卡事務、電子郵件等。
