目錄
一圖勝千言:HTTP核心機制圖解?編輯
一、HTTP本質:通信的橋梁
二、五大核心特性解析
三、HTTP頭部:隱藏的控制中心?
四、連接管理:性能關鍵點
開發者必知實踐技巧
一圖勝千言:HTTP核心機制圖解
?
一、HTTP本質:通信的橋梁
-
定義:超文本傳輸協議(HyperText Transfer Protocol)
-
定位:應用層協議,基于TCP/IP協議棧
-
核心作用:規范客戶端(瀏覽器)與服務器間的數據交換格式
二、五大核心特性解析
-
請求-響應模型
經典流程:客戶端:GET /index.html HTTP/1.1 服務端:HTTP/1.1 200 OK → <html>...</html>
-
特點:客戶端主動發起,服務器被動響應
? ? ? ?2.無狀態協議?
-
痛點:服務器不記憶用戶狀態(如登錄信息)
-
解決方案:
-
Cookie
:客戶端存儲的小型數據(4KB限制) -
Session
:服務端存儲狀態(Session ID通過Cookie傳遞) -
JWT
:現代分布式系統常用方案
-
? ? ? 3.URL:資源的身份證?
https://www.example.com:443/path/page?query=param#fragment
├─ 協議 └─ 域名 └─端口└─路徑 └─查詢參數 └─錨點
-
特殊字符需URL編碼(如空格→
%20
)
? ? ?4.請求方法:操作語義化?
方法 | 冪等性 | 安全 | 典型應用場景 |
---|---|---|---|
GET | ?? | ?? | 獲取資源(查詢操作) |
POST | ? | ? | 提交數據(創建資源) |
PUT | ?? | ? | 完整更新資源 |
PATCH | ? | ? | 局部更新資源 |
DELETE | ?? | ? | 刪除資源 |
?冪等性:多次執行效果相同
5.狀態碼:服務器的反饋語言?
-
1xx
:信息類(如101 Switching Protocols) -
2xx
:成功-
200 OK:標準成功響應
-
201 Created:資源創建成功
-
204 No Content:響應無body(刪除成功)
-
-
3xx
:重定向-
301 Moved Permanently:永久重定向
-
302 Found:臨時重定向
-
304 Not Modified:緩存有效(性能優化關鍵!)
-
-
4xx
:客戶端錯誤-
400 Bad Request:請求語法錯誤
-
401 Unauthorized:未認證
-
403 Forbidden:無權限
-
404 Not Found:資源不存在
-
-
5xx
:服務器錯誤-
500 Internal Server Error:通用服務器錯誤
-
502 Bad Gateway:網關錯誤
-
503 Service Unavailable:服務不可用
-
?
三、HTTP頭部:隱藏的控制中心?
GET /api/data HTTP/1.1
Host: api.example.com
User-Agent: Mozilla/5.0
Accept: application/json
Authorization: Bearer xxxxxxx
-
關鍵頭部:
-
Content-Type
:數據類型(text/html
,?application/json
) -
Cache-Control
:緩存策略(max-age=3600
) -
Set-Cookie
:設置客戶端Cookie -
ETag
:資源標識(緩存驗證利器)
-
?
?
四、連接管理:性能關鍵點
-
HTTP/1.1 持久連接
-
默認保持連接:
Connection: keep-alive
-
管線化(pipelining):并行發送請求(實踐中受限)
? ? 2.?HTTP/2 革命性改進
-
二進制分幀
-
多路復用:解決隊頭阻塞
-
頭部壓縮(HPACK算法)
-
服務器推送
?
五、HTTPS:安全的HTTP?
?
-
核心機制:
-
非對稱加密:建立安全連接
-
對稱加密:傳輸加密數據
-
數字證書:驗證服務器身份
-
?
?
開發者必知實踐技巧
-
用開發者工具調試(Chrome DevTools):
-
查看Network面板中的請求/響應詳情
-
模擬慢速網絡(Throttling)
? ? ?2.緩存策略優化:?
Cache-Control: public, max-age=31536000
ETag: "33a64df551425fcc55e4d42a148795d9"
? ?3.?RESTful API設計原則:
-
資源導向(URI代表資源)
-
HTTP方法對應CRUD操作
-
狀態碼精確表達結果
?
經典面試題:GET與POST的本質區別?
答案:
-
GET參數在URL中,POST在請求體
-
GET有長度限制(瀏覽器約2KB),POST無限制
-
GET冪等適合查詢,POST非冪等適合修改
-
GET可緩存,POST默認不緩存
?
?