HTTP 協議的基本知識,包括請求流程、請求方法等

什麼是http協議?

  HTTP是Hyper Text Transfer Protocol(超文本傳輸協議)的縮寫。它的發展是萬維網協會(World Wide Web Consortium)和Internet工做小組IETF(Internet Engineering Task Force)合做的結果,(他們)最終發佈了一系列的RFC,RFC 1945定義了HTTP/1.0版本。其中最著名的就是RFC 2616。RFC 2616定義了今天廣泛使用的一個版本——HTTP 1.1。web

  超文本傳輸協議是一種詳細規定了瀏覽器和萬維網服務器之間互相通訊的規則,經過因特網傳送萬維網文檔的數據傳送協議。瀏覽器

  HTTP協議(HyperText Transfer Protocol,超文本傳輸協議)是用於從WWW服務器傳輸超文本到本地瀏覽器的傳送協議。它可使瀏覽器更加高效,使網絡傳輸減小。它不只保證計算機正確快速地傳輸超文本文檔,還肯定傳輸文檔中的哪一部分,以及哪部份內容首先顯示(如文本先於圖形)等。服務器

  HTTP是一個應用層協議,由請求和響應構成,是一個標準的客戶端服務器模型。HTTP是一個無狀態的協議。網絡

http協議特色

  HTTP協議的主要特色可歸納以下:ide

  一、支持客戶/服務器模式。函數

  二、 簡單快速:客戶向服務器請求服務時,只需傳送請求方法和路徑。請求方法經常使用的有GET、HEAD、POST。每種方法規定了客戶與服務器聯繫的類型不一樣。因爲HTTP協議簡單,使得HTTP服務器的程序規模小,於是通訊速度很快。post

  三、靈活:HTTP容許傳輸任意類型的數據對象。正在傳輸的類型由Content-Type加以標記。測試

  四、無鏈接:無鏈接的含義是限制每次鏈接只處理一個請求。服務器處理完客戶的請求,並收到客戶的應答後,即斷開鏈接。採用這種方式能夠節省傳輸時間。url

  五、無狀態:HTTP協議是無狀態協議。無狀態是指協議對於事務處理沒有記憶能力。缺乏狀態意味着若是後續處理須要前面的信息,則它必須重傳,這樣可能致使每次鏈接傳送的數據量增大。spa

  另外一方面,在服務器不須要先前信息時它的應答就較快。

HTTP請求的方法:

HTTP/1.1協議中共定義了八種方法(有時也叫「動做」),來代表Request-URL指定的資源不一樣的操做方式
 
一、OPTIONS
返回服務器針對特定資源所支持的HTTP請求方法,也能夠利用向web服務器發送‘*’的請求來測試服務器的功能性
二、HEAD
向服務器索與GET請求相一致的響應,只不過響應體將不會被返回。這一方法能夠再沒必要傳輸整個響應內容的狀況下,就能夠獲取包含在響應小消息頭中的元信息。
三、GET
向特定的資源發出請求。它本質就是發送一個請求來取得服務器上的某一資源。資源經過一組HTTP頭和呈現數據(如HTML文本,或者圖片或者視頻等)返回給客戶端。GET請求中,永遠不會包含呈現數據。
四、POST
向指定資源提交數據進行處理請求(例如提交表單或者上傳文件)。數據被包含在請求體中。POST請求可能會致使新的資源的創建和/或已有資源的修改。 Loadrunner中對應POST請求函數:web_submit_data,web_submit_form
五、PUT
向指定資源位置上傳其最新內容
六、DELETE
請求服務器刪除Request-URL所標識的資源
七、TRACE
回顯服務器收到的請求,主要用於測試或診斷
八、CONNECT
HTTP/1.1協議中預留給可以將鏈接改成管道方式的代理服務器。
注意:
1)方法名稱是區分大小寫的,當某個請求所針對的資源不支持對應的請求方法的時候,服務器應當返回狀態碼405(Mothod Not Allowed);當服務器不認識或者不支持對應的請求方法時,應返回狀態碼501(Not Implemented)。
2)HTTP服務器至少應該實現GET和HEAD/POST方法,其餘方法都是可選的,此外除上述方法,特定的HTTP服務器支持擴展自定義的方法。

get 和 post區別

  區別:

    get請求無消息體,只能攜帶少許數據

    post請求有消息體,能夠攜帶大量數據

  攜帶數據的方式:

    get請求將數據放在url地址中

     post請求將數據放在消息體中

GET請求請提交的數據放置在HTTP請求協議頭中,而POST提交的數據則放在實體數據中; 
GET方式提交的數據最多隻能有1024字節,而POST則沒有此限制。 

HTTP協議請求流程

    1.打開HTTP鏈接。必定要記住HTTP是一種無狀態協議。正由於如此,對於每個請求你都要創建一個新的鏈接。

  2.設置HTTP請求頭。這裏麪包含要傳送的數據類型(二進制)和數據的總長。

  3.發送請求。將二進制流寫到服務器。

  4.讀取請求。目標servlet程序將被調用並接受HTTP請求數據。servlet程序就調用全部必要的參數選擇相應的方法。注意,若是這是這個客戶端的第一次請求,一個服務器對象的新的實例就會被建立。

  5.調用方法。方法將會被服務器端的對象調用。

  6.初始化方法響應。若是調用的方法拋出一個異常,客戶將接收到出錯信息。不然,返回的類型(若是有)將會被髮送。

  7.設置HTTP響應頭。在響應頭中,必定會設置待發送數據的類型和長度。

  8.發送響應。二進制數據流將從Web服務器發送並返回給客戶端。

相關文章
相關標籤/搜索