Get和Post請求區別和使用場景

GET和POST是什麼?
答:HTTP協議中的兩種發送請求的方法。

HTTP是什麼?
答:HTTP是基於TCP/IP的關於數據如何在萬維網中如何通信的協議。

Get請求和Post請求區別:
(1)post更安全(不會作爲url的一部分,不會被緩存、保存在服務器日誌、以及瀏覽器瀏覽記錄中)
(2)post發送的數據更大(get有url長度限制)
(3)post能發送更多的數據類型(get只能發送ASCII字符)
(4)post比get慢(下面解釋)
(5)post用於修改和寫入數據,get一般用於搜索排序和篩選之類的操作(淘寶,支付寶的搜索查詢都是get提交),目的是資源的獲取,讀取數據.

總結:GET把參數包含在URL中,POST通過request body傳遞參數,所以Post更加安全一些;Get的效率比Post高一些,但是Get請求發送的參數是有限的,而Post請求是沒有限制的(理論上來講)。

使用場景:
在做數據查詢時,建議用Get方式;而在做數據添加、修改或刪除時,建議用Post方式;
Get方式的安全性較Post方式要差些,包含機密信息的話,建議用Post數據提交方式;
區別表現如下:

Get是從服務器上獲取數據,Post是向服務器傳送數據。
Get是把參數數據隊列加到提交表單的ACTION屬性所指的URL中,值和表單內各個字段一一對應,在URL中可以看到。Post是通過HTTP Post機制,將表單內各個字段與其內容放置在HTML HEADER內一起傳送到ACTION屬性所指的URL地址。用戶看不到這個過程。
對於Get方式,服務器端用Request.QueryString獲取變量的值,對於Post方式,服務器端用Request.Form獲取提交的數據。
Get傳送的數據量較小,不能大於2KB。Post傳送的數據量較大,一般被默認爲不受限制。但理論上,IIS4中最大量爲80KB,IIS5中爲100KB。 5. Get安全性非常低,Post安全性較高。但是執行效率卻比Post方法好。

Get比Post快原因:
Get產生一個TCP數據包;Post產生兩個TCP數據包。

對於Get方式的請求,瀏覽器會把http header和data一併發送出去,服務器響應200(返回數據),而對於Post,瀏覽器先發送header,服務器響應100 continue,瀏覽器再發送data,服務器響應200 ok(返回數據)。

比如說:Get只需要汽車跑一趟就把貨送到了,而Post得跑兩趟,第一趟,先去和服務器打個招呼“嗨,我等下要送一批貨來,你們打開門迎接我”,然後再回頭把貨送過去。由於Post需要兩步,時間上消耗的要多一點,所以Get比Post更有效率。

總結:
get請求數據,post提交數據。
查詢用get,增刪改用post。

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