當(dāng)我們找工作面試時(shí),總會(huì)遇到面試官問一個(gè)問題,GET和POST有什么區(qū)別,而大部分人的回答則是,GET相比較POST效率高,但是傳遞數(shù)據(jù)少,隱秘性低。而當(dāng)面試官再問起,為什么效率高?GET響應(yīng)幾次?POST響應(yīng)幾次?為什么GET傳遞數(shù)據(jù)少?大部分人也是支支吾吾。所以我就在此,寫上大部分我知道的那些GET和POST的區(qū)別之處。
說到底,他們都是TCP/IP協(xié)議,只不過在表現(xiàn)形式和傳遞形式上有所不同
不同處
| Different | GET |
POST |
|---|---|---|
| 請(qǐng)求區(qū)別 | 通常用于向服務(wù)器查詢某些信息,請(qǐng)求會(huì)把參數(shù)放在URL中 URL是直觀的,可以在地址欄看到的 |
通常用于向服務(wù)器發(fā)送應(yīng)該被保存的數(shù)據(jù),通過request body傳遞參數(shù),作為請(qǐng)求的主體 |
| 緩存 | 會(huì)被緩存,如果請(qǐng)求兩次相同的數(shù)據(jù),第二次速度明顯快于第一次 所以請(qǐng)求大數(shù)據(jù)量時(shí)推薦使用GET |
不會(huì)被緩存 |
| 歷史 | 可以被收藏為書簽 | 不可以 |
| 瀏覽器歷史 | 保存瀏覽器歷史記錄 | 不可以 |
| 大小限制 | 瀏覽器服務(wù)器對(duì)它的限制IE:2083字節(jié)Firefox:65536字節(jié)Safari:80000字節(jié)Chrome:8182字節(jié)Opera:190000字節(jié)Apache:8192字節(jié)IIS:16384字節(jié)(可以修改)但最好不要超過2k
|
對(duì)數(shù)據(jù)大小沒有限制 |
| 編碼類型 | application/x-www-form-urlencoded | application/x-www-form-urlencoded 或 mulitipart/form-data |
| 請(qǐng)求過程 | 瀏覽器請(qǐng)求TCP連接(第一次握手) 服務(wù)器答應(yīng)進(jìn)行TCP連接(第二次握手) 瀏覽器確認(rèn),發(fā)送get請(qǐng)求頭和數(shù)據(jù) 服務(wù)器返回200 Ok響應(yīng) |
瀏覽器請(qǐng)求TCP連接(第一次握手) 服務(wù)器答應(yīng)進(jìn)行TCP連接(第二次握手) 瀏覽器確認(rèn),發(fā)送post請(qǐng)求頭 服務(wù)器返回100 Continue響應(yīng) 瀏覽器發(fā)送數(shù)據(jù) 服務(wù)器返回200 Ok響應(yīng) |
| 推薦 | 在數(shù)據(jù)查詢時(shí) | 數(shù)據(jù)添加、修改、刪除時(shí) |