HTTP協議—HTTP報文格式詳解


 

 

HTTP協議中有兩種報文:請求報文和響應報文

一、請求報文

下面是一個比較典型的請求報文:

 每一行由一個回車和換行符結束,最后一行額外再加一個回車換行符。

 

HTTP請求報文的第一行叫做請求行,后面部叫首部行。

1、請求行:

請求行的三個字段:方法字段、URL字段、HTTP版本字段。

方法字段可取值:GET、POST、HEAD、PUT和DELETE。

絕大部分HTTP請求報文都是GET方法。當瀏覽器請求一個對象時,使用GET方法,在URL字段帶有請求對象標識。

2、首部行

Host:127.0.0.1:指明了對象所在主機,雖然主機中已經有一條TCP連接存在,但該行提供的信息是Web代理高速緩存所要求的。

User-Agent:指明代理,就是瀏覽器的類型。這服務器可以有效地為不同類型的用戶代理實際發送相同對象的不同版本。

Accept-Language:zh-CN:表示語法版本。如果服務器中沒有這樣的對象的,就會發送其默認的版本。

Connection:close  :要求服務器在發送完被請求的對象后就關閉這條連接。

 

HTTP請求通用請求格式(下面討論實體體)

實體體(entity body):

使用GET方法時實體體會為空,使用POST方法時才會使用該實體體。提交表單時,會使用到POST方法(例如在搜索引擎中輸入搜索關鍵字),實體體中包含的就是用戶在表單字段中輸入的值。

雖然POST方法才能用到實體體,但是”用表單生成的請求報文不是必須使用POST方法“:

HTML表單經常使用GET方法,在表單字段中所請求的URL中包括輸入的數據,例如一個使用GET方法的表單有兩個字段aaa和bbb,那么其URL的的結構是這樣的:www.xxx.com/admin? aaa&bbb (非常常見,瀏覽網頁的時候可以注意一下)

 

下面介紹另外一些方法:

HEAD方法,與GET類似,服務器收到HEAD請求時,會用一個HTTP報文響應,但是不會反回請求對象,常用於調試跟蹤。

PUT方法:常與Web發行工具聯合使用,他允許用戶上傳對象到指定的Web服務器上指定的路徑(目錄),同樣它也被Web服務器上傳對象的應用程序所使用,

DELETE方法:允許用戶或者應用程序刪除Web服務器上的對象。

 


 

二、響應報文

首先附上典型的響應報文圖:

 結構分為三部分:狀態行、首部行、和實體體

首先關於實體體可以有些小伙伴不理解,實際上他就是請求對象本身(也就是網頁)。

然后來看看與請求報文的請求頭相對應位置的 狀態行結構:版本+狀態碼+短語(也就是與狀態碼響應的狀態信息)

 

首部行:

Date:發送響應該報文的日期信息。就是它從服務器的文件系統檢索到該對象,插入到響應報文,並發送該響應報文的時間。

Server:類似於請求報文中的User-Agent,顯示服務及服務器。

Last-Modified:對象創建或者最后修改的日期和時間。它對於存在於本地或者代理服務器上的對象緩存非常重要。

Content-Length:發送對象的字節數。

Content Type:實體體中的對象類型。值得一說的是實體體中的內容格式應由Content Type指定,而不是擴展名。

 

響應報文結構圖;

 

常見的幾個狀態碼及其相關的短語:

200 OK:請求成功,信息在返回的報文中。

301 Moved Permanently:請求的對象已經被永久轉移,新的URL定義在響應報文的Location:首部行中。客戶軟件自動獲取新的URL。

400 Bad Request:一個通用差錯代碼,指示該請求不能被服務器理解。

404  Not Found:被請求的文檔不在服務器上。

505 HTTP Version Not Support:服務器不支持請求報文使用的HTTP協議版本。

 



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM