get和post的區(qū)別

在客戶機(jī)和服務(wù)器之間進(jìn)行請(qǐng)求-響應(yīng)時(shí),兩種最常被用到的方法是:GET 和 POST。

  • GET - 從指定的資源請(qǐng)求數(shù)據(jù)。
  • POST - 向指定的資源提交要被處理的數(shù)據(jù)

Get方法

查詢字符串(名稱/值對(duì))是在 GET 請(qǐng)求的 URL 中發(fā)送的:

/test/demo.js?name="Tom"&password='123456'

Post方法

查詢字符串(名稱/值對(duì))是在 POST 請(qǐng)求的 HTTP 消息主體中發(fā)送的:

POST /test/demo.js HTTP/1.1
Host: localhost:3000
name="Tom"&password="123456"

區(qū)別

1.最直觀的就是語(yǔ)義上的區(qū)別:

  • get用于獲取數(shù)據(jù),post用于提交數(shù)據(jù)。

2.get和post的長(zhǎng)度的限制:

  • get是通過url提交數(shù)據(jù),因此get可提交的數(shù)據(jù)量就跟url所能達(dá)到的最大長(zhǎng)度有直接關(guān)系。
  • 實(shí)際上HTTP協(xié)議對(duì)url長(zhǎng)度是沒有限制的;限制url長(zhǎng)度大多數(shù)是瀏覽器或者服務(wù)器的配置參數(shù)
  • 同樣的,HTTP協(xié)議沒有對(duì)POST進(jìn)行任何限制,一般是受服務(wù)器配置限制或者內(nèi)存大小限制。

3.get和post的安全性:

  • GET是通過URL方式請(qǐng)求,可以直接看到,明文傳輸。
  • POST是通過請(qǐng)求header請(qǐng)求,可以通過開發(fā)者工具或者抓包看到,同樣也是明文的。
  • GET請(qǐng)求會(huì)保存在瀏覽器歷史紀(jì)錄中,還可能會(huì)保存在Web的日志中。

4.get冪等,post不冪等:

冪等是指同一個(gè)請(qǐng)求方法執(zhí)行多次和僅執(zhí)行一次的效果完全相同。

引入冪等主要是為了處理同一個(gè)請(qǐng)求重復(fù)發(fā)送的情況,比如在請(qǐng)求響應(yīng)前失去連接,如果方法是冪等的,就可以放心地重發(fā)一次請(qǐng)求。這也是瀏覽器在后退/刷新時(shí)遇到POST會(huì)給用戶提示的原因:POST語(yǔ)義不是冪等的,重復(fù)請(qǐng)求可能會(huì)帶來(lái)意想不到的后果。

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