HTTP(HyperText Transfer Protocol)是 Web 應用的基石,採用請求-響應模型。本文系統梳理 HTTP 請求行、請求頭、響應頭及狀態碼,助你快速掌握協議細節。
請求行包含三部分:請求方法、請求資源路徑、協議版本。例如:
GET /taoshihan/p/5346731.html HTTP/1.1
請求頭以鍵值對形式傳遞客戶端信息、緩存控制、接受內容類型等。常見字段:
| 字段 | 示例 | 說明 |
|---|---|---|
| Host | www.cnblogs.com | 目標主機名 |
| Connection | keep-alive | 連接保持模式 |
| Pragma / Cache-Control | no-cache | 禁用緩存 |
| Accept | text/html, application/xhtml+xml... | 可接受的 MIME 類型 |
| User-Agent | Mozilla/5.0 ... Chrome/45.0... | 客戶端瀏覽器信息 |
| Referer | https://zzk.cnblogs.com/... | 請求來源頁面 |
| Accept-Encoding | gzip, deflate, sdch | 支援的壓縮編碼 |
| Accept-Language | zh-CN, zh;q=0.8 | 偏好語言 |
服務器返回的響應頭包含狀態行與元數據:
HTTP/1.1 200 OK
Date: Thu, 19 May 2016 03:47:48 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: keep-alive
Vary: Accept-Encoding
Cache-Control: private, max-age=10
Expires: Thu, 19 May 2016 03:47:58 GMT
Last-Modified: Thu, 19 May 2016 03:47:48 GMT
X-UA-Compatible: IE=10
Content-Encoding: gzip
| 範圍 | 含義 | 常見代碼 |
|---|---|---|
| 200~299 | 成功 | 200 OK、201 Created、204 No Content |
| 300~399 | 重定向 | 301 永久移動、302 臨時重定向、304 Not Modified(走緩存)、307 臨時重定向(保持方法) |
| 400~499 | 客戶端錯誤 | 400 Bad Request、401 Unauthorized、403 Forbidden、404 Not Found |
| 500~599 | 服務端錯誤 | 500 Internal Server Error、502 Bad Gateway、503 Service Unavailable |
理解這些細節,能幫助你排查網絡問題、優化 API 設計、配置緩存策略,是 Java EE 開發者的必修課。