總結(jié):GET與POST請(qǐng)求方法有什么區(qū)別

發(fā)現(xiàn)很多前端小伙伴的簡(jiǎn)歷當(dāng)中都寫有這么一句:了解http協(xié)議。其實(shí)大可不必,因?yàn)閔ttp是前端基礎(chǔ)中的基礎(chǔ)。這就相當(dāng)于一位廚師的簡(jiǎn)歷中寫著:熟練使用炊具。

既然簡(jiǎn)歷中出現(xiàn)這個(gè)知識(shí)點(diǎn),那么緊隨而來的便是面試官的提問:get與post方法有什么區(qū)別呢?

大部分面試者都只會(huì)從單詞字面上回答:get是從服務(wù)器獲取數(shù)據(jù),而post是向服務(wù)器傳送數(shù)據(jù)。

很顯然上面的回答是無法讓面試官信服的,下面是我對(duì)這兩種請(qǐng)求方法的一些總結(jié):

首先get和post都是http請(qǐng)求的方法。而http又是基于TCP/IP的應(yīng)用層通信協(xié)議。所以本質(zhì)上來說get和post請(qǐng)求是沒有區(qū)別的,都是TCP鏈接。他們能做的事情也都是一樣的(與服務(wù)器進(jìn)行交互)。換言之:get能做的事,post也可以做,反之亦可!

http協(xié)議提供這兩種方法,也是在特定的情況下區(qū)分應(yīng)用:

1、參數(shù)位置:get請(qǐng)求的參數(shù)是放在url(query)里面的。而POST請(qǐng)求的參數(shù)是放置在請(qǐng)求體(content)里面的。當(dāng)然post請(qǐng)求也是可以放置在url當(dāng)中的。

2、瀏覽器緩存:get請(qǐng)求可以被瀏覽器緩存,而post請(qǐng)求不能被緩存。

3、參數(shù)長(zhǎng)度:get請(qǐng)求參數(shù)由于是在url里面,所以會(huì)受到瀏覽器的長(zhǎng)度限制,瀏覽器的不同長(zhǎng)度的數(shù)值也不同,比如IE是2083字節(jié)。理論上講,POST是沒有大小限制的。因?yàn)镠TTP協(xié)議規(guī)范沒有進(jìn)行大小限制。

4、參數(shù)安全性:同樣是因?yàn)間et的請(qǐng)求參數(shù)放置在url里,所以可見,再加上會(huì)被瀏覽器緩存,所以安全性比較差。post請(qǐng)求的參數(shù)是放置在請(qǐng)求體里,且不會(huì)被緩存,所以安全性相對(duì)就好一些。

5、瀏覽器訪問:get請(qǐng)求可以通過瀏覽器直接訪問,支持刷新和后退。post請(qǐng)求是不能被瀏覽器直接訪問的,刷新后數(shù)據(jù)會(huì)重新傳送。

6、RESTful架構(gòu):在該架構(gòu)中g(shù)et扮演獲取數(shù)據(jù)的角色,而post扮演的是添加數(shù)據(jù)的角色。所以get對(duì)數(shù)據(jù)是無害的,不會(huì)對(duì)數(shù)據(jù)資源造成影響。而post使用不當(dāng),有可能對(duì)原有數(shù)據(jù)資源造成傷害。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容