Http定義了與服務(wù)器交互的不同方法星压,最基本的方法有4種践剂,分別是GET娜膘,POST,PUT竣贪,DELETE。
1.url可見性:
get匕争,參數(shù)url可見
post,url參數(shù)不可見
**get把請求的數(shù)據(jù)放在url上甘桑,即HTTP協(xié)議頭上歹叮,其格式為:以?分割URL和傳輸數(shù)據(jù)跑杭,參數(shù)之間以&相連咆耿;post把數(shù)據(jù)放在HTTP的包體內(nèi)(requrest body)
2.傳輸數(shù)據(jù)的大小:
get一般傳輸數(shù)據(jù)大小不超過2k-4k
post請求傳輸數(shù)據(jù)的大小根據(jù)php.ini 配置文件設(shè)定票灰,也可以無限大
**get提交的數(shù)據(jù)最大是2k(原則上url長度無限制宅荤,那么get提交的數(shù)據(jù)也沒有限制咯?限制實際上取決于瀏覽器冯键,瀏覽器通常都會限制url長度在2K個字節(jié),即使(大多數(shù))服務(wù)器最多處理64K大小的url惫确,也沒有卵用);
post理論上沒有限制掩蛤。實際上IIS4中最大量為80KB,IIS5中為100KB
3.數(shù)據(jù)傳輸上:
get揍鸟,通過拼接url進行傳遞參數(shù)
post句旱,通過body體傳輸參數(shù)
**GET產(chǎn)生一個TCP數(shù)據(jù)包阳藻,瀏覽器會把http header和data一并發(fā)送出去,服務(wù)器響應(yīng)200(返回數(shù)據(jù));
POST產(chǎn)生兩個TCP數(shù)據(jù)包匾南,瀏覽器先發(fā)送header,服務(wù)器響應(yīng)100 continue蛆楞,瀏覽器再發(fā)送data,服務(wù)器響應(yīng)200 ok(返回數(shù)據(jù))
4.后退頁面的反應(yīng):
get請求頁面后退時臊岸,不產(chǎn)生影響
post請求頁面后退時尊流,會重新提交請求
**GET在瀏覽器回退時是無影響的,POST會再次提交請求
5.緩存性:
get請求是可以緩存的
post請求不可以緩存
**GET請求會被瀏覽器主動cache崖技,而POST不會,除非手動設(shè)置
6.安全性:
都不安全迎献,原則上post肯定要比get安全,畢竟傳輸參數(shù)時url不可見吁恍,但也擋不住部分人閑的沒事在那抓包玩,瀏覽器還會緩存get請求的數(shù)據(jù)冀瓦。安全性個人覺得是沒多大區(qū)別的,防君子不防小人就是這個道理拾徙。對傳遞的參數(shù)進行加密,其實都一樣
7.GET請求只能進行url編碼尼啡,而POST支持多種編碼方式
8.GET請求參數(shù)會被完整保留在瀏覽器歷史記錄里询微,而POST中的參數(shù)不會被保留
9.GET只接受ASCII字符的參數(shù)的數(shù)據(jù)類型崖瞭,而POST沒有限制
那么撑毛,post那么好為什么還用get?get效率高!
想了解的更詳細疹吃,可以參考: