首先get和post是http請求的兩種基本方法,要說它們的區別,接觸過web開發的人都能說出一二。
一般來說,我們會從三個點回答
1、get把引數包含在url中,post通過request body傳遞引數。所以相比get,post要更加安全
2、資料庫層面get具有冪等性和安全性,post不符合
3、其他層面:get可以被快取、被儲存,而post不行
但是很可惜,這不是面試官想要的答案?來吧,solo一波把。真正想要的回答是個啥玩意。
回歸本質,其實get和post是http協議中的兩種傳送請求的方法。
那麼http是什麼?
http是基於tcp/ip的關於資料如何在全球資訊網中如何通訊的協議。
http的底層是tcp/ip。所以get和post的底層也是tcp/ip,也就是說,get/post都是tcp鏈結。get和post能做的事情是一樣一樣的。你要給get加上request body,給post帶上url引數,技術上是完全行的通的。
那麼,「標準答案」裡的那些區別是怎麼回事?
get產生乙個tcp資料報;post產生兩個tcp資料報。詳細來說見如下過程:
post請求的過程:
(1)瀏覽器請求tcp連線(第一次握手)
(2)伺服器答應進行tcp連線(第二次握手)
(3)瀏覽器確認,並傳送post請求頭(第三次握手,這個報文比較小,所以http會在此時進行第一次資料傳送)
(4)伺服器返回100 continue響應
(5)瀏覽器傳送資料
(6)伺服器返回200 ok響應
get請求的過程:
(1)瀏覽器請求tcp連線(第一次握手)
(2)伺服器答應進行tcp連線(第二次握手)
(3)瀏覽器確認,並傳送get請求頭和資料(第三次握手,這個報文比較小,所以http會在此時進行第一次資料傳送)
(4)伺服器返回200 ok響應
也就是說,目測get的總耗是post的2/3左右,這個口說無憑,網上已經有網友進行過測試。
所以這才是get比post更快的根本原因,但是再網速情況好的時候可以忽略不記,但是差的時候就可以體現出來了。
那麼回答的標準答案可以怎麼說呢:
(1)post更安全(不會作為url的一部分,不會被快取、儲存在伺服器日誌、以及瀏覽器瀏覽記錄中)
(2)post傳送的資料更大(get有url長度限制)
(3)post能傳送更多的資料型別(get只能傳送ascii字元)
(4)post比get慢,get和post請求的過程中get產生乙個tcp資料報;post產生兩個tcp資料報。
(5)post用於修改和寫入資料,get一般用於搜尋排序和篩選之類的操作(**,支付寶的搜尋查詢都是get提交),目的是資源的獲取,讀取資料,而post用來提交資料。所以get具有冪等性和安全性,post不符合
http GET和POST請求的區別 優缺點分析
1 post更安全 不會作為url的一部分,不會被快取 儲存在伺服器日誌 以及瀏覽器瀏覽記錄中 2 post傳送的資料更大 get有url長度限制 3 post能傳送更多的資料型別 get只能傳送ascii字元 4 post比get慢 5 post用於修改和寫入資料,get一般用於搜尋排序和篩選之類...
jmeter之get請求和post請求區別
有什麼區別呢?get和post是什麼?http協議中的兩種傳送請求的方法。http是什麼?http是基於tcp ip的關於資料如何在全球資訊網中如何通訊的協議。http的底層是tcp ip。所以get和post的底層也是tcp ip,也就是說,get post都是tcp鏈結。get和post能做的事...
Http方法 Get請求與Post請求的區別
http方法 get請求與post請求的區別 get是向伺服器發索取資料的一種請求,而post是向伺服器提交資料的一種請求 get是獲取資訊,而不是修改資訊,類似資料庫查詢功能一樣,資料不會被修改 get請求的引數會跟在url後進行傳遞,請求的資料會附在url之後,以?分割url和傳輸資料,引數之間...