HTTP 請求方法
什麼是 HTTP?
超文字傳輸協議 (HTTP) 旨在實現客戶端和伺服器之間的通訊。
HTTP 在客戶端和伺服器之間作為請求-響應協議工作。
例如:客戶端(瀏覽器)向伺服器傳送一個 HTTP 請求;然後伺服器向客戶端返回一個響應。響應包含有關請求的狀態資訊,也可能包含請求的內容。
HTTP 方法
- GET
- POST
- PUT
- HEAD
- DELETE
- PATCH
- OPTIONS
- CONNECT
- TRACE
最常用的兩個 HTTP 方法是:GET 和 POST。
GET 方法
GET 用於從指定資源請求資料。
請注意,查詢字串(名稱/值對)在 GET 請求的 URL 中傳送
/test/demo_form.php?name1=value1&name2=value2
關於 GET 請求的一些說明
- GET 請求可以被快取
- GET 請求會保留在瀏覽器歷史記錄中
- GET 請求可以被加入書籤
- 在處理敏感資料時,切勿使用 GET 請求
- GET 請求有長度限制
- GET 請求僅用於請求資料(不用於修改)
POST 方法
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
下表比較了 GET 和 POST 這兩種 HTTP 方法。
GET | POST | |
---|---|---|
BACK 按鈕/重新載入 | 無害 | 資料將被重新提交(瀏覽器應提醒使用者資料即將被重新提交) |
書籤 | 可以加入書籤 | 無法加入書籤 |
快取 | 可以快取 | 不快取 |
編碼型別 | application/x-www-form-urlencoded | application/x-www-form-urlencoded 或 multipart/form-data。對於二進位制資料,請使用 multipart 編碼 |
History | 引數保留在瀏覽器歷史記錄中 | 引數不儲存在瀏覽器歷史記錄中 |
資料長度限制 | 是,當傳送資料時,GET 方法將資料附加到 URL;URL 的長度是有限的(最大 URL 長度為 2048 個字元) | 無限制 |
資料型別限制 | 只允許 ASCII 字元 | 無限制。也允許二進位制資料 |
安全性 | GET 不如 POST 安全,因為傳送的資料是 URL 的一部分 傳送密碼或其他敏感資訊時,切勿使用 GET! |
POST 比 GET 更安全一些,因為引數不儲存在瀏覽器歷史記錄或 Web 伺服器日誌中 |
可見性 | 資料在 URL 中對所有人可見 | 資料不顯示在 URL 中 |
PUT 方法
PUT 用於向伺服器傳送資料以建立/更新資源。
POST 和 PUT 之間的區別在於 PUT 請求是冪等的。也就是說,多次呼叫同一個 PUT 請求總是會產生相同的結果。相反,重複呼叫 POST 請求可能會多次建立同一資源。
HEAD 方法
HEAD 與 GET 幾乎相同,但沒有響應正文。
換句話說,如果 GET /users 返回使用者列表,則 HEAD /users 將發出相同的請求,但不會返回使用者列表。
HEAD 請求在實際進行 GET 請求之前,可用於檢查 GET 請求將返回什麼——HEAD 請求可以讀取 Content-Length 標頭來檢查檔案大小,而無需實際下載檔案。
DELETE 方法
DELETE 方法刪除指定的資源。
PATCH 方法
PATCH 方法用於對資源應用部分修改。
OPTIONS 方法
OPTIONS 方法描述了目標資源的通訊選項。
CONNECT 方法
CONNECT 方法用於與請求的資源建立雙向通訊(隧道)。
TRACE 方法
TRACE 方法用於執行訊息回送測試,該測試用於測試目標資源的路徑(對除錯很有用)。