兩種最常用的 HTTP 方法是:GET 和 POST。

什么是 HTTP?

超文本傳輸協(xié)議(HTTP)的設(shè)計(jì)目的是保證客戶(hù)機(jī)與服務(wù)器之間的通信。
HTTP 的工作方式是客戶(hù)機(jī)與服務(wù)器之間的請(qǐng)求-應(yīng)答協(xié)議。

在客戶(hù)機(jī)和服務(wù)器之間進(jìn)行請(qǐng)求-響應(yīng)時(shí),兩種最常被用到的方法是:GET 和 POST。
GET - 從指定的資源請(qǐng)求數(shù)據(jù)。
POST - 向指定的資源提交要被處理的數(shù)據(jù)

GET 方法

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

/test/demo_form.asp?name1=value1&name2=value2

有關(guān) GET 請(qǐng)求的其他一些注釋?zhuān)?/p>

  • GET 請(qǐng)求可被緩存
  • GET 請(qǐng)求保留在瀏覽器歷史記錄中
  • GET 請(qǐng)求可被收藏為書(shū)簽
  • GET 請(qǐng)求不應(yīng)在處理敏感數(shù)據(jù)時(shí)使用
  • GET 請(qǐng)求有長(zhǎng)度限制
  • GET 請(qǐng)求只應(yīng)當(dāng)用于取回?cái)?shù)據(jù)

POST方法

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

POST /test/demo_form.asp HTTP/1.1
Host: bpup.com
name1=value1&name2=value2

有關(guān) POST 請(qǐng)求的其他一些注釋?zhuān)?/p>

  • POST 請(qǐng)求不會(huì)被緩存
  • POST 請(qǐng)求不會(huì)保留在瀏覽器歷史記錄中
  • POST 不能被收藏為書(shū)簽
  • POST 請(qǐng)求對(duì)數(shù)據(jù)長(zhǎng)度沒(méi)有要求

安全
如果一個(gè)方法的語(yǔ)義在本質(zhì)上是「只讀」的,那么這個(gè)方法就是安全的。客戶(hù)端向服務(wù)端的資源發(fā)起的請(qǐng)求如果使用了是安全的方法,就不應(yīng)該引起服務(wù)端任何的狀態(tài)變化,因此也是無(wú)害的。 此RFC定義,GET, HEAD, OPTIONS 和 TRACE 這幾個(gè)方法是安全的。

冪等
冪等的概念是指同一個(gè)請(qǐng)求方法執(zhí)行多次和僅執(zhí)行一次的效果完全相同,引入冪等主要是為了處理同一個(gè)請(qǐng)求重復(fù)發(fā)送的情況,比如在請(qǐng)求響應(yīng)前失去連接,如果方法是冪等的,就可以放心地重發(fā)一次請(qǐng)求。這也是瀏覽器在后退/刷新時(shí)遇到POST會(huì)給用戶(hù)提示的原因:POST語(yǔ)義不是冪等的,重復(fù)請(qǐng)求可能會(huì)帶來(lái)意想不到的后果。
可緩存性
顧名思義就是一個(gè)方法是否可以被緩存,此RFC里GET,HEAD和某些情況下的POST都是可緩存的,但是絕大多數(shù)的瀏覽器的實(shí)現(xiàn)里僅僅支持GET和HEAD。
GET的語(yǔ)義是請(qǐng)求獲取指定的資源。GET方法是安全、冪等、可緩存的(除非有 Cache-ControlHeader的約束),GET方法的報(bào)文主體沒(méi)有任何語(yǔ)義。

POST的語(yǔ)義是根據(jù)請(qǐng)求負(fù)荷(報(bào)文主體)對(duì)指定的資源做出處理,具體的處理方式視資源類(lèi)型而不同。POST不安全,不冪等,(大部分實(shí)現(xiàn))不可緩存。

GET 相對(duì) POST 的優(yōu)勢(shì)是什么

最大的優(yōu)勢(shì)是, GET 的URL可以人肉手輸啊。你在地址欄打個(gè)POST給我看看。本質(zhì)上面, GET 的所有信息都在URL, 所以很方便的記錄下來(lái)重復(fù)使用。所以如果你希望- 請(qǐng)求中的URL可以被手動(dòng)輸入- 請(qǐng)求中的URL可以被存在書(shū)簽里,或者歷史里,或者快速撥號(hào)里面,或者分享給別人。- 請(qǐng)求中的URL是可以被搜索引擎收錄的。- 帶云壓縮的瀏覽器,比如Opera mini/Turbo 2, 只有GET才能在服務(wù)器端被預(yù)取的。- 請(qǐng)求中的URL可以被緩存。

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

相關(guān)閱讀更多精彩內(nèi)容

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