HTTP協議(二)HTTP報文詳解


前面說到,HTTP事務是由HTTP報文的格式化數據塊進行通信的,本文就詳細介紹一下HTTP報文的組成和結構。

HTTP報文是由一行一行的簡單字符串組成的。由於HTTP報文都是純文本,所以你可以很方便的對其進行讀寫。

下圖顯示一個簡單的HTTP事務的報文:

 

 

 

 

 

 

 

 

 

 

 

 

 

從客戶端發往服務器的報文叫請求報文(request message),服務器收到請求報文后,作為響應發往客戶端的報文稱為響應報文(response message),請求報文和響應報文的格式都是一樣的,HTTP報文格式主要包含三個部分:

起始行:

請求報文的起始行說明這個HTTP請求的需求【如上圖中的:GET /index_page.html HTTP/1.0 說明:要向服務器通過GET方法獲取  /index_page.html 資源,HTTP協議版本為HTTP/1.0】

響應報文的起始行 說明服務器的響應情況【如上圖中的:HTTP/1.0 200 OK,說明服務器的響應情況為 200 OK】

 

首部字段:

在HTTP的報文起始行后面往往會有多個首部字段(非必須),這些字段都以 Key:value的格式發出,首部以一個空行結束(空行后面就是主體,也可能沒有主體)

如上圖中的請求報文中的首部字段有:

Accept:text/html,application/xhtml+xml,application/xml;
Accept-Encoding:gzip, deflate
Accept-Language:zh-CN,zh;q=0.8
Connection:keep-alive
Cookie:balabala....
Host:www.myweb.com

響應報文中的首部字段有:

Connection:keep-alive
Content-Encoding:gzip
Content-Type:text/html; charset=utf-8
Date:Thu, 29 Mar 2018 08:20:03 GMT
Server:openresty
Transfer-Encoding:chunked

 

主體:

報文主體就是報文的主要數據部分,它可以是任意數據類型的數據。比如請求主體中包含了要發給服務器的數據,響應主體中裝載了要返回給客戶端的數據。

起始行和首部都是文本化且具有特定結構的,主體則可包含所有二進制數據和文本。

 

下面介紹一個HTTP報文實例:

 

這個是Google Chrome 開發者模式下的HTTP請求抓包數據,下面解釋這個報文:

 

HTTP報文便於閱讀,但不好的地方在於解析起來不太方便。

 

 

HTTP /1.1 首部字段說明:

HTTP首部字段有很多,這里列舉說明一下HTTP/1.1 的首部字段:

通用首部字段

 

請求首部字段:

 

響應首部字段 :

實體首部字段:

非HTTP/1.1中使用到的首部字段還有 Cookie、 Set-Cookie 和 Content-Disposition 等在其他 RFC 中定義的首部字段的使用頻率也很高。

這些非正式的首部字段統一歸納在 RFC4229 HTTP Header Field Registrations 中。

參考:

《HTTP權威指南》 


免責聲明!

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



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