來源:辣子雞 發(fā)布時(shí)間:2020-05-12 11:03:57 閱讀量:1726
前言
之前一次面試時(shí)面試官問到了Get請(qǐng)求和Post請(qǐng)求的區(qū)別,對(duì)于web基礎(chǔ)來說這個(gè)還是比較重要的,所以我打算整理一下分享給大家,以下是我個(gè)人的一些總結(jié),如果大神有更好的理解,歡迎補(bǔ)充。
從三個(gè)方面來總結(jié)
Get請(qǐng)求和Post請(qǐng)求的區(qū)別
優(yōu)缺點(diǎn)
何時(shí)用Get請(qǐng)求,何時(shí)用Post請(qǐng)求
正文
1、Get請(qǐng)求和Post請(qǐng)求的區(qū)別
我們主要從五個(gè)角度去分析兩者的區(qū)別:
1、請(qǐng)求的形式
GET請(qǐng)求:把請(qǐng)求的數(shù)據(jù)放在URL上,用?分割URL和傳輸?shù)臄?shù)據(jù),多個(gè)參數(shù)的話用&符號(hào)連接。
舉個(gè)例子,“ http://www.laziji.com?id=11&name=laziji ”在這個(gè)地址里面,?后面的時(shí)請(qǐng)求的參數(shù),這里有兩個(gè)參數(shù)id和name,值分別為“11”和“l(fā)aziji”??偨Y(jié):1.參數(shù)就是傳給后臺(tái)取值的,“?”是解析的開始點(diǎn),“&”是將多個(gè)參數(shù)進(jìn)行連接的。2.URL的結(jié)構(gòu):“協(xié)議://域名或IP地址:端口號(hào)/目錄/文件名.文件名后綴?參數(shù)1=值1&參數(shù)2=值2”
POST請(qǐng)求:把請(qǐng)求的數(shù)據(jù)放在HTTP請(qǐng)求包的包體中(requrest body)。
POST請(qǐng)求包含兩個(gè)部分:請(qǐng)求頭(header)和請(qǐng)求體(body)
2、傳輸數(shù)據(jù)的大小
GET請(qǐng)求:雖然在HTTP規(guī)范中沒有對(duì)URL的長度和傳輸數(shù)據(jù)的大小做限制,但是實(shí)際情況下,瀏覽器一般會(huì)限制url的長度不超過2k個(gè)字節(jié),提交的數(shù)據(jù)最大是2k。
POST請(qǐng)求:理論上也是不限制的,但是實(shí)際上服務(wù)器會(huì)對(duì)post提交數(shù)據(jù)的大小做限制。
3、安全性
GET請(qǐng)求:在傳輸數(shù)據(jù)時(shí)會(huì)將數(shù)據(jù)保留在瀏覽器的歷史記錄中,而且傳輸?shù)臄?shù)據(jù)參數(shù)會(huì)顯示在url中,所有人都可以查看,安全行低。
POST請(qǐng)求:在請(qǐng)求時(shí)數(shù)據(jù)是存放在請(qǐng)求包中的,不顯示在url中,并且數(shù)據(jù)不會(huì)保留在瀏覽器的歷史記錄中。
4、編碼方式
GET請(qǐng)求只能ASCII編碼;POST請(qǐng)求支持多種編碼方式。
5、對(duì)服務(wù)器的操作
GET請(qǐng)求:只是從服務(wù)器獲取數(shù)據(jù),不進(jìn)行修改。
POST請(qǐng)求:向服務(wù)器提交數(shù)據(jù),可能更新數(shù)據(jù),也就更改了服務(wù)器的數(shù)據(jù)。
2、優(yōu)缺點(diǎn)
get請(qǐng)求比post請(qǐng)求快。
get產(chǎn)生一個(gè)TCP數(shù)據(jù)包,post產(chǎn)生兩個(gè)TCP數(shù)據(jù)包;
GET請(qǐng)求:瀏覽器將header和data一起發(fā)送,服務(wù)器響應(yīng)200(返回?cái)?shù)據(jù))。POST請(qǐng)求:瀏覽器先將header發(fā)送,服務(wù)器響應(yīng)100 continue,瀏覽器再將data發(fā)送,服務(wù)器響應(yīng)200(返回?cái)?shù)據(jù))。
get會(huì)將數(shù)據(jù)保留在瀏覽器的歷史記錄中,post不會(huì)。
post不能進(jìn)行管道化傳輸。
3、何時(shí)用Get請(qǐng)求,何時(shí)用Post請(qǐng)求
適合使用GET請(qǐng)求的情況:
用來查找資源,HTML表單數(shù)據(jù)只是用來幫助搜索。
請(qǐng)求結(jié)果無持續(xù)性的副作用。
收集的數(shù)據(jù)及HTML表單內(nèi)輸入的字段名稱不超過1024個(gè)字符
適合使用POST請(qǐng)求的情況:
請(qǐng)求結(jié)果有持續(xù)性的副作用。如修改數(shù)據(jù)、添加數(shù)據(jù)。
當(dāng)使用get方法URL過長時(shí)改用post方法。
要傳輸?shù)臄?shù)據(jù)不是采用7位的ASCII編碼。