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

什么是 HTTP?

超文本傳輸協議(HTTP)的設計目的是保證客戶機與服務器之間的通信。
HTTP 的工作方式是客戶機與服務器之間的請求-應答協議。

在客戶機和服務器之間進行請求-響應時,兩種最常被用到的方法是:GET 和 POST。
GET - 從指定的資源請求數據。
POST - 向指定的資源提交要被處理的數據

GET 方法

查詢字符串(名稱/值對)是在 GET 請求的 URL 中發送的

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

有關 GET 請求的其他一些注釋:

  • GET 請求可被緩存
  • GET 請求保留在瀏覽器歷史記錄中
  • GET 請求可被收藏為書簽
  • GET 請求不應在處理敏感數據時使用
  • GET 請求有長度限制
  • GET 請求只應當用于取回數據

POST方法

查詢字符串(名稱/值對)是在 POST 請求的 HTTP 消息主體中發送的:

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

有關 POST 請求的其他一些注釋:

  • POST 請求不會被緩存
  • POST 請求不會保留在瀏覽器歷史記錄中
  • POST 不能被收藏為書簽
  • POST 請求對數據長度沒有要求

安全
如果一個方法的語義在本質上是「只讀」的,那么這個方法就是安全的。客戶端向服務端的資源發起的請求如果使用了是安全的方法,就不應該引起服務端任何的狀態變化,因此也是無害的。 此RFC定義,GET, HEAD, OPTIONS 和 TRACE 這幾個方法是安全的。

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

POST的語義是根據請求負荷(報文主體)對指定的資源做出處理,具體的處理方式視資源類型而不同。POST不安全,不冪等,(大部分實現)不可緩存。

GET 相對 POST 的優勢是什么

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

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容