【HTTP】get 和 post 兩種基本請求方法

根據HTTP標準,HTTP請求可以使用多種請求方法。
HTTP1.0定義了三種請求方法:Get,Post 和 Head方法
HTTP1.1新增了五種請求方法:Options,Put,Delete,Trace和Connect

HTTP Request Method方法

共計8種:
在這裏插入圖片描述
【以上內容來自W3Cschool】

常用的兩種請求方式就是我們常說的Post,Get請求方法。

Post請求和Get請求區別:

  1. Get在瀏覽器回退時不重複提交請求,而Post會再次提交請求。
  2. Get產生的URL地址可以被Bookmark,而Post不可以。
  3. Get請求會被瀏覽器主動Cache,而post不會,除非手動設置。
  4. Get請求只能進行url編碼,而post支持多種編碼方式。
  5. Get請求參數被毀完整保留在瀏覽器歷史記錄裏,而Post中的參數不會被保留。
  6. Get請求在url中傳遞的參數是有長度限制的,而Post沒有。
  7. 對參數的數據類型,Get只接受ASCII字符,而Post沒有限制。
  8. Get比Post更不安全,因爲Get會把信息暴露在URL上,所以不能用來傳送敏感信息。
  9. Get參數通過URL傳遞,而Post是放在Requset body中。

上面這些都是一些比較官方的解釋。從本質上來說,Get和Post請求並沒有區別,它們只不過是HTTP協議中兩種不同的發送請求的方式而已。

HTTP底層遵循的協議是TCP/IP協議,所以Get和Post請求也遵循TCP/IP協議。也就是說,Get和Post都是TCP鏈接。

TCP就像交通工具一樣,用來運輸東西,TCP用來傳輸數據,在傳輸數據過程中,要經過三次握手,所以它是相對(UDP)安全的。在交通工具中,由於要在不同的環境中使用,所以會有天上飛的/陸上跑的/水裏遊的。在同一環境下也會有多種類型的交通工具。比如有裝載貨物的大/小貨車,有裝載人的大/小客車,汽車等。不同的交通工具會被貼上不同的標籤,在HTTP請求方式中,根據用途不同,也會有不同的標籤,這些被貼上的標籤,就是用來識別這些請求方式的。所以Post和Get請求本質上都是基於TCP/IP協議,用於傳輸數據;只不過就是傳輸數據的方式是不同。就像我們從公司回到家裏一樣,可以步行/騎電車/自駕,目標都是家,只是回到家的方式不同罷了。不同的方式有它自己獨特的特點,優勢與劣勢等。

除了上面說到的這些,Get和Post請求還有一個重要的區別:Get產生一個TCP數據包,Post產生兩個TCP數據包。

在Get請求方式中,瀏覽器會把http header和data一併發送出去,服務器響應200(返回數據);而對於Post,瀏覽器先發送header,服務器響應100 continue,瀏覽器再發送data,服務器響應200 ok(返回數據)。也就是說,如果用一輛貨車從甲地往乙地運送一車貨物,採用Get運送方式,貨車會帶着命令-乙呀,我要給你一車財富哦,並且在甲地裝上貨物,開往乙地,到達乙地後,乙給出應答。而採用Post運送方式,貨車會先帶着命令開往乙地,把請求-給你一車財富 告訴乙,此時要接收乙的反饋信息,然後再回到甲地裝上財富,開往乙地,乙給出應答。

在網絡良好情況下,兩種請求方式的時間差並不大,而在網絡環境較差的情況下,兩次數據包的TCP(Post請求方式)能夠很好的驗證數據的完整性。

由於HTTP的規定和瀏覽器/服務器的不同,Get和Post請求在數據傳送過程中可能會有一些不同。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章