GET和POST的區(qū)別
????GET和POST本質(zhì)上就是TCP鏈接操刀,并無(wú)差別强品。但是由于HTTP的規(guī)定和瀏覽器/服務(wù)器的限制瓜客,導(dǎo)致他們?cè)趹?yīng)用過(guò)程中體現(xiàn)出一些不同他巨。
???? GET和POST還有一個(gè)重大區(qū)別太防,簡(jiǎn)單的說(shuō):GET產(chǎn)生一個(gè)TCP數(shù)據(jù)包谈撒;POST產(chǎn)生兩個(gè)TCP數(shù)據(jù)包蚕捉。
????長(zhǎng)的說(shuō):對(duì)于GET方式的請(qǐng)求律胀,瀏覽器會(huì)把http header和data一并發(fā)送出去贝乎,服務(wù)器響應(yīng)200(返回?cái)?shù)據(jù))情连;而對(duì)于POST,瀏覽器先發(fā)送header览效,服務(wù)器響應(yīng)100 continue却舀,瀏覽器再發(fā)送data虫几,服務(wù)器響應(yīng)200 ok(返回?cái)?shù)據(jù))。
要點(diǎn)區(qū)別
1挽拔、GET在瀏覽器回退時(shí)是無(wú)害的辆脸,而POST會(huì)再次提交請(qǐng)求。
2螃诅、GET產(chǎn)生的URL地址可以被Bookmark啡氢,而POST不可以。
3术裸、GET請(qǐng)求會(huì)被瀏覽器主動(dòng)cache倘是,而POST不會(huì),除非手動(dòng)設(shè)置穗椅。
4辨绊、GET請(qǐng)求只能進(jìn)行url編碼,而POST支持多種編碼方式匹表。
5门坷、GET請(qǐng)求參數(shù)會(huì)被完整保留在瀏覽器歷史記錄里,而POST中的參數(shù)不會(huì)被保留袍镀。
6默蚌、GET請(qǐng)求在URL中傳送的參數(shù)是有長(zhǎng)度限制的,而POST么有苇羡。
7绸吸、對(duì)參數(shù)的數(shù)據(jù)類型,GET只接受ASCII字符设江,而POST沒(méi)有限制锦茁。
8、GET比POST更不安全叉存,因?yàn)閰?shù)直接暴露在URL上码俩,所以不能用來(lái)傳遞敏感信息。
9歼捏、GET參數(shù)通過(guò)URL傳遞稿存,POST放在Request body中。
注意
四種常見的 POST 提交數(shù)據(jù)方式:
1.application/x-www-form-urlencoded
2.multipart/form-data
3.application/json
4.text/xml