HTTP 協議的請求報文和響應報文是通信的核心載體,二者結構相似,均由 三部分 + 一個空行 組成,具體格式如下:
一、 HTTP 請求報文結構
請求報文由客户端發送給服務器,結構分為 請求行 + 請求頭 + 空行 + 請求體(請求體為可選部分)。
請求行是請求報文的第一行,包含 3 個核心字段,用空格分隔,末尾以 \r\n 結束。格式:請求方法 URL 協議版本示例:GET /index.html HTTP/1.1
請求方法:如 GET POST PUT DELETE
URL:要訪問的資源路徑
協議版本:如 HTTP/1.1 HTTP/2
請求頭位於請求行之後,由多個鍵值對組成,每行一個鍵值對,格式為 鍵: 值,末尾以 \r\n 結束。請求頭用於傳遞請求的元數據,比如客户端信息、接受的數據格式等。常見請求頭示例:
plaintext
Host: www.example.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) Chrome/120.0.0.0
Accept: text/html,application/json
空行是請求頭和請求體的分隔符,僅由 \r\n 組成,必須存在,即使沒有請求體也要保留。
請求體(可選)是請求的正文部分,僅在需要提交數據時存在(如 POST PUT 方法)。示例(POST 提交表單數據):
plaintext
username=test&password=123456
注意:GET 方法沒有請求體,參數會拼接在 URL 後。
二、 HTTP 響應報文結構
響應報文由服務器發送給客户端,結構分為 狀態行 + 響應頭 + 空行 + 響應體。
狀態行是響應報文的第一行,包含 3 個核心字段,用空格分隔,末尾以 \r\n 結束。格式:協議版本 狀態碼 狀態描述示例:HTTP/1.1 200 OK
協議版本:與請求一致,如 HTTP/1.1
狀態碼:3 位數字,標識請求處理結果(如 200 成功、404 資源不存在)
狀態描述:對狀態碼的文字解釋,如 OK Not Found
響應頭位於狀態行之後,同樣是 鍵: 值 格式的鍵值對,用於傳遞響應的元數據,比如服務器信息、響應體格式等。常見響應頭示例:
plaintext
Server: Nginx/1.21.6
Content-Type: text/html; charset=utf-8
Content-Length: 2048
空行是響應頭和響應體的分隔符,同樣由 \r\n 組成,必須存在。
響應體是響應的正文部分,包含服務器返回的實際數據,比如 HTML 頁面、JSON 數據、圖片二進制流等。