http Post 和 Get 差異

Po-Ching Liu
3 min readDec 27, 2017

--

本篇文章將整理 http (Hypertext Transfer Protocol,超文本傳輸協定)中 Post 和 Get 方法(Method)。對於網頁前、後端開發者來說,Post 和 Get方法是最常使用的兩種,對於新鮮人來說,這兩種方法之間的差異也是面試官最常問的問題。

http

http 是用戶終端(Client)和伺服器端(Server)請求(Request)和應答(Response)的標準。在HTTP/1.1協定中共定義了八種方法(動作),以不同方式操作指定的資源,分別為 GET、HEAD、POST、PUT、DELETE、TRACE、OPTIONS、CONNECT,上述的每一種方式在一開始定義時皆有其用途,例如:GET — 向特定的資源發出”顯示“請求,類似於查詢操作。POST — 向指定資源提交資料,請求伺服器進行處理(例如提交表單或者上傳檔案),資料被包含在請求本文中,這個請求可能會建立新的資源或修改現有資源,或二者皆有,類似於修改操作。然而在實際開發上,可能因為各種原因(GET也可以做到POST的目的,而且還可以不用使用form),而失去了原來定義的用途。

Get Method — 向指定的資源要求資料,類似於查詢操作。

  • 資料傳遞方式 — 將參數以 Query String方式(name/value),由URL帶至Server端,EX: /test/demo_get?name1=value1&name2=value2
  • 參數長度限制 — 長度限制根據瀏覽器、Server 的不同會有所不同。
  • 安全性 — 較POST不安全,因為傳遞的參數會在URL上顯示。
  • 資料種類 — 只允許 ASCII。
  • 可以重新載入或按上一頁並不會有任何問題。
  • 傳遞的參數被儲存在瀏覽器的歷史紀錄中。
  • 可以加入瀏覽器書籤。
http GET

Post Method — 將要處理的資料提交給指定的資源,類似於更新操作。

  • 資料傳遞方式 — 將參數放至 Request 的 message body 中,因此不會在URL看到參數,適合用於隱密性較高的資料,EX: Signup、Signin帳號、密碼等。
  • 參數長度限制 — 長度不受限制。
  • 安全性 — 較POST安全,實際上傳遞的參數皆可以在封包(Request- line 和 Message-body)上看到。
  • 資料種類 — 無限制。
  • 重新載入或按上一頁瀏覽器會出現將重新提交(re-submitted)資料的提示。
  • 傳遞的參數不會被儲存在瀏覽器的歷史紀錄中。
  • 無法加入瀏覽器書籤。
http POST

--

--