HTML 請求方法
什么是 HTTP?
超文本傳輸協議(Hypertext Transfer Protocol,縮寫 HTTP)旨在啟用客戶端和服務器之間的通信。
HTTP 充當客戶端和服務器之間的請求-響應協議。
舉例:客戶端(瀏覽器)向服務器發送 HTTP 請求;然后服務器將響應返回客戶端。響應包含有關請求的狀態信息,也可能包含所請求的內容。
HTTP 方法
- GET
- POST
- PUT
- HEAD
- DELETE
- PATCH
- OPTIONS
最常用的兩種方法是:GET 和 POST。
GET 方法
GET 用于從指定資源請求數據。
GET 是最常見的 HTTP 方法之一。
請注意,查詢字符串(名稱/值對)是在 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: codew3c.com name1=value1&name2=value2
POST 是最常見的 HTTP 方法之一。
有關 POST 請求的其他一些注釋:
- POST 請求不會被緩存
- POST 請求不會保留在瀏覽器歷史記錄中
- POST 不能被收藏為書簽
- POST 請求對數據長度沒有要求
PUT 方法
PUT 用于將數據發送到服務器來創建/更新資源。
POST 和 PU T之間的區別在于 PUT 請求是冪等的(idempotent)。也就是說,多次調用相同的 PUT 請求將始終產生相同的結果。相反,重復調用POST請求具有多次創建相同資源的副作用。
HEAD 方法
HEAD 與 GET 幾乎相同,但沒有響應主體。
換句話說,如果 GET /users 返回用戶列表,那么 HEAD /users 將發出相同的請求,但不會返回用戶列表。
HEAD 請求對于在實際發出 GET 請求之前(例如在下載大文件或響應正文之前)檢查 GET 請求將返回的內容很有用。
DELETE 方法
DELETE 方法刪除指定的資源。
OPTIONS 方法
OPTIONS 方法描述目標資源的通信選項。
比較 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 中。 |