接口測試01 - HTTP協議報文結構及示例


HTTP基本架構

用一張簡單的流程圖來展示HTTP協議的基本架構,以便先有個基礎的了解。

 

  1)Web Client可以是瀏覽器、搜索引擎等等一切基於HTTP協議發起http請求的工具。

  2)Web Server可以是任何的能解析http請求,並返回給Web Client可識別的響應的服務,常見

       的有apache、nginx、IIS等等web服務器。

濃縮的都是精華,看下最簡潔的HTTP交互圖:

HTTP報文結構

  1)請求報文

      HTTP請求報文由請求行、請求頭、空行和請求內容4個部分構成。

      請求行:

      由請求方法字段、URL字段、協議版本字段三部分構成,它們之間由空格隔開。常用

      的請求方法有:GET、POST、HEAD、PUT、DELETE等等。

      請求頭:

      請求頭由key/value對組成,每行為一對,key和value之間通過冒號(:)分割。請求頭的

      作用主要用於通知服務端有關於客戶端的請求信息。

      典型的請求頭有:

      User-Agent:生成請求的瀏覽器類型

      Accept:客戶端可識別的響應內容類型列表;星號*用於按范圍將類型分組。*/*表示可

      接受全部類型,type/*表示可接受type類型的所有子類型。

      Accept-Language:客戶端可接受的自然語言

      Accept-Encoding:客戶端可接受的的編碼壓縮格式

      Accept-Charset:可接受的字符集

      Host:請求的主機名,允許多個域名綁定同一IP地址

      connection:連接方式(close或keeplive)

      Cookie:存儲在客戶端的擴展字段

      空行:

      最后一個請求頭之后就是空行,用於告訴服務端以下內容不再是請求頭的內容了。

      請求內容:

      請求內容主要用於POST請求,與POST請求方法配套的請求頭一般有

      Content-Type(標識請求內容的類型)和Content-Length(標識請求內容的長度)

  2)響應報文

      HTTP響應報文由狀態行、響應頭、空行和響應內容4個部分組成。

      狀態行:

      由HTTP協議版本、狀態碼、狀態碼描述三部分構成,它們之間由空格隔開。

      狀態碼由3位數字組成,第一位標識響應的類型,常用的5大類型狀態碼如下:

      1xx:表示服務器已經接收了客戶端的請求,客戶端可以繼續發送請求

      2xx:表示服務器已經成功接收到請求並進行處理

      3xx:表示服務器要求客戶端重定向

      4xx:表示客戶端的請求有非法內容

      5xx:表示服務器未能正常處理客戶端的請求而出現意外的錯誤

      常見狀態碼說明:

      200 OK:表示客戶端請求成功

      400 Bad Request:表示客戶端請求有語法錯誤,不能被服務器端解析

      401 Unauthonzed:表示請求未經授權,該狀態碼必須與WWW-Authenticate報文頭一起使用

      404 Not Found:請求的資源不存在,例如輸入錯誤的url

      500 Internal Server Error:表示服務器發生了不可預期的錯誤,導致無法完成客戶端的請求

      503 Service Unavailable:表示服務器當前不能處理客戶端的請求,在一段時間后服務器可能恢復正常。

      響應頭:

      一般情況下,響應頭會包含以下,甚至更多的信息。

      Location:服務器返回給客戶端,用於重定向到新的位置

      Server:包含服務器用來處理請求的軟件信息及版本信息

      Vary:標識不可緩存的請求頭列表

      Connection:連接方式。

      對於請求端來講:close來告訴服務端,斷開連接,不用等待后續的請求了。keeplive則是告訴服務端,

      在完成本次請求的響應后,保持連接,等待本次連接后的后續請求。

      對於響應端來講:close表示連接已經關閉。keeplive則表示連接保持中,可以繼續處理后續請求。

      Keep-Alive表示如果請求端保持連接,則該請求頭部信息表明期望服務端保持連接多長時間(秒),

      例如300秒,應該這樣寫Keep-Alive:300

      空行:

      最后一個響應頭之后就是空行,用於告訴請求端以下內容不再是響應頭的內容了。

      響應內容:

      服務端返回給請求端的文本信息。

HTTP報文示例

  在Firefox下用firebug隨意抓取一個HTTP包和上文的報文結構做下一一對應的關系圖,以便了解實際的

  包和標准報文結構的對應關系。

  

 


免責聲明!

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



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