post 與get區(qū)別

普通區(qū)別

1.get 把參數(shù)包含在URL中,POST通過 request boby傳遞參數(shù) 。

2.get在瀏覽器回退時(shí)是無害的,而post會(huì)再次提交請(qǐng)求。

3.get產(chǎn)生的URL地址可以被bookmark,而post不可以。

4.get請(qǐng)求會(huì)被瀏覽器主動(dòng)cache,而post不會(huì),除非手動(dòng)設(shè)置。

5.get請(qǐng)求只能進(jìn)行url編碼,而post支持多種編碼方式。

6.get請(qǐng)求參數(shù)會(huì)被完整保留在瀏覽器歷史記錄里,而post中的參數(shù)不會(huì)被保留。

7.在瀏覽器請(qǐng)求中,get請(qǐng)求在url中傳送的參數(shù)是有長度限制的,而post沒有。

8.對(duì)參數(shù)的數(shù)據(jù)類型,get只授受ASCII字符,而post沒有限制。

9.get比post更不安全,參數(shù)直接暴露在URL上,不能傳遞敏感信息。

10.get參數(shù)通過URL傳遞,post放在Request body中。

最重要的知識(shí)點(diǎn)來了


get產(chǎn)生一個(gè)TCP數(shù)據(jù)包;post產(chǎn)生兩個(gè)TCP數(shù)據(jù)包。

get方式請(qǐng)求,瀏覽器會(huì)把http header 和data一并發(fā)送出去,服務(wù)器響應(yīng)200(返回?cái)?shù)據(jù))

post方式請(qǐng)求,瀏覽器先發(fā)送header,服務(wù)器響應(yīng)100 continue,瀏覽器再發(fā)送data,服務(wù)器響應(yīng)200 OK(返回?cái)?shù)據(jù))

也就是說,GET只需要汽車跑一趟就把貨送到了,而POST得跑兩趟,第一趟,先去和服務(wù)器打個(gè)招呼“嗨,我等下要送一批貨來,你們打開門迎接我”,然后再回頭把貨送過去。

因?yàn)镻OST需要兩步,時(shí)間上消耗的要多一點(diǎn),看起來GET比POST更有效。因此Yahoo團(tuán)隊(duì)有推薦用GET替換POST來優(yōu)化網(wǎng)站性能。但這是一個(gè)坑!跳入需謹(jǐn)慎。為什么?

1. GET與POST都有自己的語義,不能隨便混用。

2. 據(jù)研究,在網(wǎng)絡(luò)環(huán)境好的情況下,發(fā)一次包的時(shí)間和發(fā)兩次包的時(shí)間差別基本可以無視。而在網(wǎng)絡(luò)環(huán)境差的情況下,兩次包的TCP在驗(yàn)證數(shù)據(jù)包完整性上,有非常大的優(yōu)點(diǎn)。

3. 并不是所有瀏覽器都會(huì)在POST中發(fā)送兩次包,F(xiàn)irefox就只發(fā)送一次。

最后編輯于
?著作權(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ù)。

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