get與post區別?
POST和GET都是向服務器提交數據,并且都會從服務器獲取數據。
區別:
1、傳送方式:get通過地址欄傳輸,post通過報文傳輸。
2、傳送長度:get參數有長度限制(受限于url長度),而post無限制
3、GET和POST還有一個重大區別,簡單的說:
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就只發送一次。
建議:
1、get方式的安全性較Post方式要差些,包含機密信息的話,建議用Post數據提交方式;
2、在做數據查詢時,建議用Get方式;而在做數據添加、修改或刪除時,建議用Post方式;
案例:一般情況下,登錄的時候都是用的POST傳輸,涉及到密碼傳輸,而頁面查詢的時候,如文章id查詢文章,用get 地址欄的鏈接為:article.php?id=11,用post查詢地址欄鏈接為:article.php, 不會將傳輸的數據展現出來。