Http定義了與伺服器互動的不同方法,最基本的方法有4種,分别是GET,POST,PUT,DELETE。
1.url可見性:
get,參數url可見
post,url參數不可見
**get把請求的資料放在url上,即HTTP協定頭上,其格式為:以?分割URL和傳輸資料,參數之間以&相連;post把資料放在HTTP的包體内(requrest body)
2.傳輸資料的大小:
get一般傳輸資料大小不超過2k-4k
post請求傳輸資料的大小根據php.ini 配置檔案設定,也可以無限大
**get送出的資料最大是2k(原則上url長度無限制,那麼get送出的資料也沒有限制咯?限制實際上取決于浏覽器,浏覽器通常都會限制url長度在2K個位元組,即使(大多數)伺服器最多處理64K大小的url,也沒有卵用);
post理論上沒有限制。實際上IIS4中最大量為80KB,IIS5中為100KB
3.資料傳輸上:
get,通過拼接url進行傳遞參數
post,通過body體傳輸參數
**GET産生一個TCP資料包,浏覽器會把http header和data一并發送出去,伺服器響應200(傳回資料);
POST産生兩個TCP資料包,浏覽器先發送header,伺服器響應100 continue,浏覽器再發送data,伺服器響應200 ok(傳回資料)
4.後退頁面的反應:
get請求頁面後退時,不産生影響
post請求頁面後退時,會重新送出請求
**GET在浏覽器回退時是無影響的,POST會再次送出請求
5.緩存性:
get請求是可以緩存的
post請求不可以緩存
**GET請求會被浏覽器主動cache,而POST不會,除非手動設定
6.安全性:
都不安全,原則上post肯定要比get安全,畢竟傳輸參數時url不可見,但也擋不住部分人閑的沒事在那抓包玩,浏覽器還會緩存get請求的資料。安全性個人覺得是沒多大差別的,防君子不防小人就是這個道理。對傳遞的參數進行加密,其實都一樣
7.GET請求隻能進行url編碼,而POST支援多種編碼方式
8.GET請求參數會被完整保留在浏覽器曆史記錄裡,而POST中的參數不會被保留
9.GET隻接受ASCII字元的參數的資料類型,而POST沒有限制
那麼,post那麼好為什麼還用get?get效率高!
想了解的更詳細,可以參考:
https://blog.csdn.net/zzk220106/article/details/78595108/