1. HTTP
HTTP即超文本傳輸協議(Hyper Text Transfer Protocol),是因特網上應用最廣的一種協議。
- 設計目的:保證客户端與服務器之間的通信(發佈和接受HTML頁面);
- 工作方式:客户端-服務器端的請求-應答協議
例如:
響應中包括:關於請求的狀態信息和可能被請求的內容
2.GET與POST
HTTP定義了與服務器交互的不同方法:
- GET:從指定的資源請求數據
- POST:從指定的資源請求數據
- PUT
- DELETE
-
|
方法
|
概述
|
|
HEAD
|
與 GET 相同,但只返回 HTTP 報頭,不返回文檔主體。
|
|
PUT
|
上傳指定的 URI 表示。
|
|
DELETE
|
刪除指定資源。
|
|
OPTIONS
|
返回服務器支持的 HTTP 方法。
|
|
CONNECT
|
把請求連接轉換到透明的 TCP/IP 通道
|
一般我們在瀏覽器輸入一個網址訪問網站都是GET請求
2.1.GET與POST方法的主要區別
最直觀的區別就是GET把參數包含在URL中,POST通過request body傳遞參數。
例如:
GET方法:
/test/demo_form.php?name1=value1&name2=value2
POST方法
POST /test/demo_form.php HTTP/1.1
Host: runoob.com
name1=value1&name2=value2
|
方法
|
GET
|
POST
|
|
緩存
|
可被緩存
|
不會緩存
|
|
歷史記錄
|
會被保存在瀏覽器歷史記錄中
|
不會保存在瀏覽器歷史記錄中
|
|
書籤
|
可被收藏為書籤
|
不可被收藏為書籤
|
|
數據長度
|
有長度限制:當發送數據時,GET 方法向 URL 添加數據;URL 的長度是受限制的(URL 的最大長度是 2048 個字符)。
|
對長度無限制
|
|
後退按鈕/刷新
|
無害
|
數據會被重新提交(瀏覽器應該告知用户數據會被重新提交)
|
|
對數據類型的限制
|
只允許 ASCII 字符
|
沒有限制。也允許二進制數據,支持整個 ISO10646 字符集。
|
|
安全性
|
與 POST 相比,GET 的安全性較差,因為所發送的數據是 URL 的一部分。在發送密碼或其他敏感信息時絕不要使用 GET !
|
POST 比 GET 更安全,因為參數不會被保存在瀏覽器歷史或 web 服務器日誌中。
|
|
可見性
|
數據在 URL 中對所有人都是可見的。
|
數據不會顯示在 URL 中。
|
2.2 為什麼GET比POST快
- 【影響較小】POST需要在請求的body部分包含數據,所以會多了幾個數據描述部分的首部字段
- 【影響較大】POST在真正接收數據之前會先將請求頭髮送給服務器進行確認,然後才真正發送數據,見下圖
POST請求的過程:
GET請求的過程