HTTP一個請求中包含哪些內容?
一個 HTTP 請求(HTTP Request)是由客戶端(例如瀏覽器)發送到伺服器,用來請求資源(例如網頁、API 資料等)。它包含以下幾個主要部分:
-
請求行(Request Line)
-
請求頭(Request Headers)
-
請求主體(Request Body,選填)
讓我們一步步來詳細說明每部分的內容,並提供範例。
1. 請求行(Request Line)
請求行是 HTTP 請求的第一行,包含三個核心元素:
-
HTTP 方法(Method):表示請求的動作,例如 GET、POST、PUT、DELETE 等。
-
請求目標(Request Target):通常是 URL 的路徑(Path),指明要訪問的資源,例如 /api/users。
-
HTTP 版本(HTTP Version):指定使用的 HTTP 協議版本,例如 HTTP/1.1 或 HTTP/2。
範例:
GET /api/users HTTP/1.1
-
GET:表示這是一個獲取資料的請求。
-
/api/users:表示請求的資源路徑。
-
HTTP/1.1:表示使用 HTTP 1.1 協議。
2. 請求頭(Request Headers)
請求頭是用來提供額外的資訊,告訴伺服器更多關於請求的細節或客戶端的設定。這些頭是鍵值對(Key-Value Pair)的格式,每行一個頭。
常見的請求頭包括:
-
Host:指定伺服器的域名或 IP 地址,例如 example.com。
-
User-Agent:描述發送請求的客戶端(例如瀏覽器類型、版本等)。
-
Accept:告訴伺服器客戶端接受的回應格式(例如 application/json)。
-
Content-Type:如果有請求主體,指定主體的資料格式(例如 application/json 或 application/x-www-form-urlencoded)。
-
Authorization:用於傳送認證資訊,例如 API Token 或 Bearer Token。
-
Content-Length:表示請求主體的長度(以字節為單位)。
範例:
Host: example.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) Chrome/91.0.4472.124
Accept: application/json
Content-Type: application/json
Authorization: Bearer abc123
說明:
-
Host 告訴伺服器請求的目標域名。
-
User-Agent 顯示這是來自 Chrome 瀏覽器的請求。
-
Accept 表示客戶端希望接收 JSON 格式的回應。
-
Content-Type 表示如果有請求主體,格式是 JSON。
-
Authorization 表示這是一個需要認證的請求,帶有 Bearer Token。
3. 請求主體(Request Body)
請求主體是 HTTP 請求的可選部分,通常在 POST、PUT 等方法中使用,用來傳送資料給伺服器(例如表單資料、JSON 資料等)。GET 請求通常沒有主體。
範例: 假設你用 POST 方法提交一個 JSON 格式的資料:
{
"name": "小明",
"email": "xiaoming@example.com"
}
說明:
-
請求主體的格式由 Content-Type 頭決定,例如 application/json 表示 JSON 格式。
-
如果是表單提交,Content-Type 可能是 application/x-www-form-urlencoded,主體會像是 name=小明&email=xiaoming@example.com。
總結
一個 HTTP 請求包含:
-
請求行:指定方法、路徑和 HTTP 版本。
-
請求頭:提供額外的元資料,例如 Content-Type、Authorization 等。
-
請求主體(可選):傳送資料給伺服器,通常用於 POST 或 PUT 請求。