一、概述
http請求方式有get、post、put、delete等多種,最常用的就是get和post
多種請求方式
二、區別:
1、GET請求一般用去請求獲取數據,
POST一般作爲發送數據到後臺時使用
2、GET請求也可傳參到後臺,但是其參數在瀏覽器的地址欄的url中可見,所以隱私性安全性較差,且參數長度也是有限制的
POST請求傳遞參數放在Request body中,不會在url中顯示,比GET要安全,且參數長度無限制
3、GET請求刷新瀏覽器或回退時沒有影響
POST回退時會重新提交數據請求
4、GET 請求可被緩存
POST 請求不會被緩存
5、GET 請求保留在瀏覽器歷史記錄中
POST 請求不會保留在瀏覽器歷史記錄中
6、GET 請求可被收藏爲書籤
POST 不能被收藏爲書籤
7、GET請求只能進行url編碼(application/x-www-form-urlencoded)
POST支持多種編碼方式(application/x-www-form-urlencoded 或 multipart/form-data。爲二進制數據使用多重編碼。)
8、GET請求比較常見的方式是通過url地址欄請求
POST最常見是通過form表單發送數據請求
三、進一步理解
個人查了一些資料後的理解:
post請求和get請求都是HTTP的請求方式,本質上來說並無區別,底層實現都是基於TCP/IP協議。
但是請求有各種各樣的方式,於是HTTP對請求方式進行了劃分和規定,於是產生了get、post處理請求的分工和區別。
此外還有搜索到另外一個區別:GET產生一個TCP數據包;POST產生兩個TCP數據包。
對於GET方式的請求,瀏覽器會把http header和data一併發送出去,服務器響應200(返回數據);
而對於POST,瀏覽器先發送header,服務器響應100 continue,瀏覽器再發送data,服務器響應200 ok(返回數據)。
-
GET與POST都有自己的語義,不能隨便混用。
-
據研究,在網絡環境好的情況下,發一次包的時間和發兩次包的時間差別基本可以無視。而在網絡環境差的情況下,兩次包的TCP在驗證數據包完整性上,有非常大的優點。
-
並不是所有瀏覽器都會在POST中發送兩次包,Firefox就只發送一次。