HTTP 方法:GET 對比 POST

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

什麼是 HTTP?

超文字傳輸協議(HTTP)的設計目的是保證客戶機與伺服器之間的通訊。

HTTP 的工作方式是客戶機與伺服器之間的請求-應答協議。

web 瀏覽器可能是客戶端,而計算機上的網路應用程式也可能作為伺服器端。

舉例:客戶端(瀏覽器)向伺服器提交 HTTP 請求;伺服器向客戶端返回響應。響應包含關於請求的狀態資訊以及可能被請求的內容。

兩種 HTTP 請求方法:GET 和 POST

在客戶機和伺服器之間進行請求-響應時,兩種最常被用到的方法是:GET 和 POST。

  • GET - 從指定的資源請求資料。
  • POST - 向指定的資源提交要被處理的資料

GET 方法

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

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

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

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

POST 方法

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

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

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

  • POST 請求不會被快取
  • POST 請求不會保留在瀏覽器歷史記錄中
  • POST 不能被收藏為書籤
  • POST 請求對資料長度沒有要求

比較 GET 與 POST

下面的表格比較了兩種 HTTP 方法:GET 和 POST。

  GET POST
後退按鈕/重新整理 無害 資料會被重新提交(瀏覽器應該告知會員資料會被重新提交)。
書籤 可收藏為書籤 不可收藏為書籤
快取 能被快取 不能快取
編碼型別 application/x-www-form-urlencoded application/x-www-form-urlencoded 或 multipart/form-data。為二進制資料使用多重編碼。
歷史 參數保留在瀏覽器歷史中。 參數不會儲存在瀏覽器歷史中。
對資料長度的限制 是的。當發送資料時,GET 方法向 URL 新增資料;URL 的長度是受限制的(URL 的最大長度是 2048 個字元)。 無限制。
對資料型別的限制 只允許 ASCII 字元。 沒有限制。也允許二進制資料。
安全性

與 POST 相比,GET 的安全性較差,因為所發送的資料是 URL 的一部分。

在發送密碼或其他敏感資訊時絕不要使用 GET !

POST 比 GET 更安全,因為參數不會被儲存在瀏覽器歷史或 web 伺服器日誌中。
可見性 資料在 URL 中對所有人都是可見的。 資料不會顯示在 URL 中。

其他 HTTP 請求方法

下面的表格列出了其他一些 HTTP 請求方法:

方法 描述
HEAD 與 GET 相同,但只返回 HTTP 報頭,不返回文件主體。
PUT 上傳指定的 URI 表示。
DELETE 刪除指定資源。
OPTIONS 返回伺服器支援的 HTTP 方法。
CONNECT 把請求連線轉換到透明的 TCP/IP 通道。