前言:進(jìn)入正文之前我們先了解下基本概念温峭,什么是HTTP? 超文本傳輸協(xié)議(HTTP) 的設(shè)計(jì)目的是保證客戶(hù)機(jī)與服務(wù)器之間的通信症革。HTTP 的工作方式是客戶(hù)機(jī)與服務(wù)器之間的請(qǐng)求 - 應(yīng)答協(xié)議冕屯。web 瀏覽器可能是客戶(hù)端砂竖,而計(jì)算機(jī)上的網(wǎng)絡(luò)應(yīng)用程序也可能作為服務(wù)器端包警。
??Http定義了與服務(wù)器交互的不同方法拧咳,最基本的方法有4種图甜,分別是GET, POST, PUT, DELETE碍粥。我們這里只討論GET和POST請(qǐng)求的差別。GET一般用于獲取/查詢(xún)資源信息黑毅,而POST一般用于更新資源信息嚼摩。
1,根據(jù)HTTP規(guī)范矿瘦,GET用于信息獲取枕面。
(1). 所謂的安全意味著該操作用于獲取信息而非修改信息,換句話(huà)說(shuō)缚去,GET僅僅用來(lái)獲取資源信息潮秘,向查詢(xún)數(shù)據(jù)庫(kù)一樣,不會(huì)修改易结,增加數(shù)據(jù)枕荞,不會(huì)影響到資源的狀態(tài)。
2搞动,根據(jù)HTTP規(guī)范躏精,POST表示可能修改變服務(wù)器上的資源的請(qǐng)求
??我們以簡(jiǎn)書(shū)網(wǎng)站為例,讀者對(duì)某篇文章發(fā)表自己的評(píng)論應(yīng)該通過(guò)POST實(shí)現(xiàn)鹦肿,因?yàn)樵谠u(píng)論提交后站點(diǎn)的資源已經(jīng)不同了矗烛,或者說(shuō)資源被修改了。
我們?cè)購(gòu)谋砻娆F(xiàn)象上來(lái)說(shuō)說(shuō)GET和POST的區(qū)別:
1箩溃,GET
把請(qǐng)求的數(shù)據(jù)放在URL上瞭吃,即HTTP協(xié)議頭上,其格式為:
以涣旨?
分割URL和傳輸數(shù)據(jù)歪架,參數(shù)之間以&
相連。
2开泽,數(shù)據(jù)如果是英文字母/數(shù)字牡拇,原樣發(fā)送魁瞪。
3穆律,如果是空格惠呼,轉(zhuǎn)化為+
。
4峦耘,如果是中文/其他字符剔蹋,則直接把字符串用 BASE64
加密, 及“%”加上“字符串的16進(jìn)制ASCII碼”辅髓。
5泣崩,POST把數(shù)據(jù)放在HTTP的包體內(nèi)(requrest body)。
6洛口,GET提交的數(shù)據(jù)最大是2k矫付,POST理論上沒(méi)有限制。
7第焰,GET在瀏覽器回退時(shí)是無(wú)害的买优,POST會(huì)再次提交請(qǐng)求。
8挺举,GET產(chǎn)生的URL地址可以被BookMark杀赢,而POST不可以。
9湘纵,GET請(qǐng)求會(huì)被瀏覽器主動(dòng)cache脂崔,而POST不會(huì),除非手動(dòng)設(shè)置梧喷。
10砌左,GET請(qǐng)求參數(shù)會(huì)被完整的保留在瀏覽器的歷史記錄中,而POST中的參數(shù)不會(huì)被保留铺敌。
11绊困,GET只接受ASCII字符的參數(shù)的數(shù)據(jù)類(lèi)型,而POST沒(méi)有限制适刀。
12秤朗,GET比POST效率高,但是GET安全性非常低笔喉,POST安全性較高取视。