1. HTTP

HTTP即超文本傳輸協議(Hyper Text Transfer Protocol),是因特網上應用最廣的一種協議。

  1. 設計目的:保證客户端與服務器之間的通信(發佈和接受HTML頁面);
  2. 工作方式:客户端-服務器端的請求-應答協議

例如:


HttpRequest 發送get請求demo_服務器

響應中包括:關於請求的狀態信息和可能被請求的內容

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傳遞參數。
例如:


HttpRequest 發送get請求demo_#服務器_02

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快

  1. 【影響較小】POST需要在請求的body部分包含數據,所以會多了幾個數據描述部分的首部字段
  2. 【影響較大】POST在真正接收數據之前會先將請求頭髮送給服務器進行確認,然後才真正發送數據,見下圖

POST請求的過程:


HttpRequest 發送get請求demo_#http_03

GET請求的過程


HttpRequest 發送get請求demo_客户端_04