Get和Post請求有什么區別?


Get和Post是什么?

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

get和post其實都是 http的請求方法。除了這 2 個請求方法之外,http還有 head、put、delete、trace、connect、options這 6 個請求方法。所以http的請求方法共計有 8 種,它們的描述如下所示 

 Get和Post請求有什么區別?

1. Get是不安全的,因為在傳輸過程,數據被放在請求的URL中;Post的所有操作對用戶來說都是不可見的。

2. Get傳送的數據量較小,這主要是因為受URL長度限制;Post傳送的數據量較大,一般被默認為不受限制。

3. Get限制Form表單的數據集的值必須為ASCII字符;而Post支持整個ISO10646字符集。

4. Get執行效率卻比Post方法好。Get是form提交的默認方法。

5. Get產生一個TCP數據包;Post產生兩個TCP數據包。

第五點最重要的區別補充說明:

對於GET方式的請求,瀏覽器會把http header和data一並發送出去,服務器響應200(返回數據);

而對於POST,瀏覽器先發送header,服務器響應100 continue,瀏覽器再發送data,服務器響應200 ok(返回數據)。

也就是說,GET只需要汽車跑一趟就把貨送到了,而POST得跑兩趟,第一趟,先去和服務器打個招呼“嗨,我等下要送一批貨來,你們打開門迎接我”,然后再回頭把貨送過去。 

因為POST需要兩步,時間上消耗的要多一點,看起來GET比POST更有效。因此Yahoo團隊有推薦用GET替換POST來優化網站性能。但這是一個坑!跳入需謹慎。為什么?

1. GET與POST都有自己的語義,不能隨便混用。

2. 據研究,在網絡環境好的情況下,發一次包的時間和發兩次包的時間差別基本可以無視。而在網絡環境差的情況下,兩次包的TCP在驗證數據包完整性上,有非常大的優點。

3. 並不是所有瀏覽器都會在POST中發送兩次包,Firefox就只發送一次。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM