一、區(qū)別
1.效率
GET的意思是『得』,從服務(wù)器獲取數(shù)據(jù)(也可以上傳數(shù)據(jù),參數(shù)就是),效率較高
POST的意思是『給』,但可以向服務(wù)器發(fā)送數(shù)據(jù)和下載數(shù)據(jù),效率不如GET
2.緩存
GET 請求能夠被緩存,默認的請求方式也是有緩存的
POST請求默認不會緩存
緩存是針對URL來進行緩存的,GET請求由于其參數(shù)是直接加在URL上-的,一種參數(shù)組合就有一種URL的緩存,可以根據(jù)參數(shù)來進行一一對應(yīng),重復(fù)請求是冪等的(不論請求多少次,結(jié)果都一樣);
而POST請求的URL沒有參數(shù),每次請求的URL都相同,數(shù)據(jù)體(HTTPBody)可能不同,無法一一對應(yīng),所以緩存沒有意義
3.安全性
GET的所有參數(shù)全部包裝在URL中,明文顯示,且服務(wù)器的訪問日志會記錄,非常不安全
POST的URL中只有資源路徑,不包含參數(shù),參數(shù)封裝在二進制的數(shù)據(jù)體中,服務(wù)器也不會記錄參數(shù),相對安全。所有涉及用戶隱私的數(shù)據(jù)都要用POST傳輸
POST的安全是相對的,對于普通用戶來說他們看不到明文,數(shù)據(jù)封裝對他們來說就是屏障。但是對于專業(yè)人士,它們會抓包會分析,沒有加密的數(shù)據(jù)包對他們來說也是小case。所以POST僅僅是相對安全,唯有對數(shù)據(jù)進行加密才會更安全。當(dāng)然加密也有被破解的可能性,理論上所有的加密方式都可以破解,只是時間長短的問題。而加密算法要做的就是使得破解需要的時間盡量長,越長越安全。由于我們也需要解密,加密算法太過復(fù)雜也并非好事,這就要結(jié)合使用情況進行折中或者足夠?qū)嶋H使用即可。繞的有點遠,具體的話,我將在后續(xù)的文章之中介提及,并介紹一些常用的加密算法。
4.數(shù)據(jù)量
HTTP協(xié)議中均沒有對GET和POST請求的數(shù)據(jù)大小進行限制,但是實際應(yīng)用中它們通常受限于軟硬件平臺的設(shè)計和性能。
GET:不同的瀏覽器和服務(wù)器不同,一般限制在2~8K之間,更加常見的是1k以內(nèi)
POST方法提交的數(shù)據(jù)比較大,大小靠服務(wù)器的設(shè)定值限制,PHP默認是2M(具體的話大家以后看后端給的開發(fā)文檔就行了)
文/高海濱(簡書作者)
原文鏈接:http://www.itdecent.cn/p/5e55a734e9a2
著作權(quán)歸作者所有,轉(zhuǎn)載請聯(lián)系作者獲得授權(quán),并標(biāo)注“簡書作者”。