HTTP(HyperText Transfer Protocol),中文「超文本傳輸協議」。html
HTTP 協議工做在客戶端-服務端架構上,即瀏覽器做爲客戶端經過 URL 向 Web 服務器發送全部請求,Web服務器接收請求後,向瀏覽器發送響應信息。瀏覽器
請求報文緩存
組成部分 | 描述 |
---|---|
請求行 | 包含請求方法、URI、HTTP版本。 |
請求頭 | 告訴服務器關於客戶端請求的信息。 |
空行 | 告訴瀏覽器下一個是請求體。 |
請求體 | 一條 HTTP 消息要傳輸的主體。 |
響應報文安全
組成部分 | 描述 |
---|---|
狀態行 | 包含HTTP版本、狀態碼、狀態信息 |
響應頭 | 相似請求頭 |
空行 | 告訴瀏覽器下一個是響應體 |
響應體 | 相似請求體 |
HTTP 協議是無狀態的,請求與請求之間沒有聯繫。服務器
服務器爲了知道請求來自哪一個客戶,所以 Cookie 技術出現了。網絡
Cookie架構
Cookie 包含在 HTTP 的請求頭裏,讀取這個 Cookie 就知道用戶是誰了。網站
本質上,Cookie 是一份存儲在用戶本地的文件,裏面包含了每次請求須要傳遞的信息。加密
在 Chrome 中,經過下面的操做,能夠查看瀏覽器儲存的 Cookie。url
設置 > 高級 > 隱私設置與安全性 > 網站設置 > Cookie和網站數據 > 查看全部 Cookie 和網站數據
Session
Cookie 以明文儲存在本地,不夠安全,須要 Seesion 來解決這個問題。
Session 是存在服務器的,裏面包含了用戶狀態。
而 Cookie 中儲存了 Session ID,當瀏覽器再次請求時,會把這個 Session ID 帶上,服務器經過 Session ID 找到對應的 Session。
請求方法 | 描述 |
---|---|
GET | 獲取數據 |
POST | 傳輸數據 |
HEAD | 相似於 GET 請求,用於獲取報文首部(請求頭)。 |
PUT | 更新數據 |
DELETE | 刪除數據 |
GET和POST的區別
HTTP 狀態碼根據第一個數字不一樣,能夠分爲 5 種類型:
分類 | 描述 |
---|---|
1** | 指示信息-收到請求,繼續處理 |
2** | 成功-請求被成功接收 |
3** | 重定向-須要進一步的操做,以完成請求 |
4** | 客戶端錯誤-請求包含語法錯誤或沒法完成請求 |
5** | 服務器錯誤-服務器在處理請求的過程當中發生了錯誤 |
常見 HTTP 狀態碼
版本 | 發佈時間 | 簡介 |
---|---|---|
HTTP/0.9 | 1991年 | 該版本極其簡單,只有一個命令GET ,目前已再也不使用。 |
HTTP/1.0 | 1996 年 5 月 | 引入了多種功能,至今仍在使用當中。 |
HTTP/1.1 | 1997 年 1 月 | 引入持久鏈接,是目前最流行的版本。 |
HTTP/2 | 2015 年 5 月 | 引入了服務器推送等多種功能,是目前最新的版本。 |
即 Keep-Alive 模式,保持 TCP 一直處於鏈接狀態。
HTTP 協議採用「請求-應答」模式,在普通模式中,每一個請求/應答都要新建一個鏈接,完成以後當即斷開;
當使用 Keep-Alive 模式(持久鏈接),客戶端與服務器的鏈接持續有效,再次請求,不須要從新創建鏈接。
http1.0 中默認關閉,經過請求頭加入「Connection: Keep-Alive」啓用;
http1.1中默認啓用,經過請求頭加入「Connection: close 」關閉。
即一次性打包全部請求,沒必要在傳輸過程等待服務器響應。
HTTPS 是 HTTP 協議的安全版本。
HTTP 的數據傳輸是明文的,不安全。HTTPS 使用了 SSL/TLS 協議進行了加密處理。
非對稱加密:私鑰加密的密文,只能公鑰解密;公鑰加密的密文,只能用私鑰解密。
私鑰只給一我的,而公鑰能夠發給全部的人。
全部未採用 HTTPS 的網站,在 Chrome 68 中將標記爲不安全網站。
參考連接
[HTTPS 原理分析——帶着疑問層層深刻](