HTTP(HyperText Transfer Protocol)是萬維網數據通信的基礎協議,作為應用層協議具有以下關鍵特性:
客戶端-服務器模型:基于請求/響應模式
無狀態協議:默認不保留通信狀態
可擴展性:通過首部字段擴展功能
明文傳輸(HTTPS 實現加密)
協議演進歷程
版本 | 發布時間 | 核心改進 | 典型應用場景 |
---|---|---|---|
HTTP/0.9 | 1991 | 僅支持 GET 方法 | 早期簡單文檔傳輸 |
HTTP/1.0 | 1996 | 引入 HEAD/POST 方法、狀態碼 | 基礎網頁瀏覽 |
HTTP/1.1 | 1997 | 持久連接、管道化、緩存控制 | 現代 Web 應用基礎 |
HTTP/2 | 2015 | 二進制分幀、頭部壓縮、多路復用 | 高性能網站/SPA |
HTTP/3 | 2022 | QUIC 協議、0-RTT 連接 | 移動端/高延遲環境 |
請求報文
GET /api/users HTTP/1.1
Host: example.com
User-Agent: Mozilla/5.0
Accept: application/json(請求體)
?響應報文
HTTP/1.1 200 OK Content-Type: application/json Date: Wed, 21 Oct 2023 07:28:00 GMT{"data": [...] }
請求方法矩陣
方法 | 冪等性 | 安全性 | 典型應用場景 |
---|---|---|---|
GET | 是 | 是 | 獲取資源 |
POST | 否 | 否 | 創建資源/提交表單 |
PUT | 是 | 否 | 完整更新資源 |
PATCH | 否 | 否 | 部分更新資源 |
DELETE | 是 | 否 | 刪除資源 |
HEAD | 是 | 是 | 獲取響應頭信息 |
狀態碼分類
狀態碼 | 類別 | 常見示例 | 開發者處理建議 |
---|---|---|---|
1xx | 信息響應 | 100 Continue | 等待后續請求 |
2xx | 成功響應 | 200 OK / 201 Created | 正常處理業務邏輯 |
3xx | 重定向 | 301 Moved Permanently | 更新書簽/處理跳轉邏輯 |
4xx | 客戶端錯誤 | 400 Bad Request | 檢查請求參數/權限配置 |
5xx | 服務端錯誤 | 500 Internal Server Error | 排查服務端代碼/日志 |
?
連接管理優化
策略 | HTTP/1.1 | HTTP/2 |
---|---|---|
連接復用 | Keep-Alive | 多路復用 |
頭部壓縮 | 無 | HPACK 壓縮 |
服務器推送 | 不支持 | 支持 |
請求優先級 | 無 | 流優先級控制 |
?緩存策略設計
graph LR
? ? A[客戶端請求] --> B{緩存有效?}
? ? B -->|是| C[返回304 Not Modified]
? ? B -->|否| D[返回200 + 新資源]
?