HTTP請(qǐng)求中GET與POST方法的本質(zhì)區(qū)別

在做完一個(gè)大的項(xiàng)目以后又產(chǎn)生了一些思考,重新審視了一個(gè)面試中常常被問(wèn)到的問(wèn)題,GET方法與POST方法的區(qū)別,其實(shí)網(wǎng)上有許多“標(biāo)準(zhǔn)”答案,但看過(guò)以后感覺(jué)與自己的想法有些許的出入,最后看到了幾篇非常有見(jiàn)解的文章,產(chǎn)生了一些自己的理解。詳細(xì)分析:語(yǔ)義之爭(zhēng),get與post區(qū)別的真相,HTTP|GET 和 POST 區(qū)別?網(wǎng)上多數(shù)答案都是錯(cuò)的!。(RFC2616)

HTTP請(qǐng)求中GET與POST方法究竟有什么區(qū)別呢??

個(gè)人認(rèn)為最本質(zhì)的區(qū)別只有一個(gè),就是語(yǔ)義上的區(qū)別,GET的語(yǔ)義是請(qǐng)求獲取指定的資源,POST的語(yǔ)義是根據(jù)請(qǐng)求負(fù)荷(報(bào)文主體)對(duì)指定的資源做出處理,具體的處理方式視資源類型而不同。換句通俗的話說(shuō),其兩者均為HTTP中的請(qǐng)求方法,報(bào)文的格式相同,底層也都需要借助TCP連接進(jìn)行實(shí)現(xiàn),只是在設(shè)計(jì)HTTP官方文檔RFC的時(shí)候,GET和POST被設(shè)定為了兩種不同的用途,并在此基礎(chǔ)上根據(jù)用途的不同,進(jìn)行不同的默認(rèn)配置(包括是否安全,是否冪等,是否可緩存,信息存儲(chǔ)位置等等)。

但是規(guī)范畢竟是規(guī)范,并不是強(qiáng)制要求,你可以在POST方法的URL中添加數(shù)據(jù),也可以使用GET方法傳輸?shù)膮?shù)對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作,只是這些并不符合規(guī)范可能會(huì)產(chǎn)生一些問(wèn)題,比如你在瀏覽器中輸入域名后,瀏覽器會(huì)使用GET方法進(jìn)行網(wǎng)站的信息獲取,再進(jìn)行頁(yè)面渲染,如果這時(shí)候使用POST方法對(duì)網(wǎng)站會(huì)對(duì)新的信息進(jìn)行處理,可能會(huì)引發(fā)加載或渲染錯(cuò)誤等問(wèn)題,又比如在提交表單時(shí)不使用POST方法,再進(jìn)行頁(yè)面刷新或后退等操作時(shí),就可能會(huì)產(chǎn)生重復(fù)提交等問(wèn)題。但最后話又說(shuō)回來(lái)了,在某些自己配置的接口上,若對(duì)于GET和POST的語(yǔ)義并沒(méi)有較大區(qū)分,不會(huì)產(chǎn)生錯(cuò)誤的情況下,則可替換的使用GET和POST方法使用AJAX等實(shí)現(xiàn)發(fā)送HTTP請(qǐng)求。

最后編輯于
?著作權(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)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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