GET 和 POST 請求的優缺點 區別

2021-09-28 20:18:35 字數 1393 閱讀 6172

首先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和傳輸資料,引數之間...