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就只發送一次。
