
- HTTP 教程
- HTTP - 首頁
- HTTP - 概述
- HTTP - 引數
- HTTP - 訊息
- HTTP - 請求
- HTTP - 響應
- HTTP - 方法
- HTTP - 狀態碼
- HTTP - 報頭欄位
- HTTP - 快取
- HTTP - URL 編碼
- HTTP - 安全性
- HTTP - 訊息示例
- HTTP 有用資源
- HTTP - 快速指南
- HTTP - 有用資源
HTTP - 訊息
HTTP 基於客戶端-伺服器架構模型和無狀態請求/響應協議,透過在可靠的 TCP/IP 連線上交換訊息來執行。
HTTP“客戶端”是一個程式(Web 瀏覽器或任何其他客戶端),它建立與伺服器的連線,以傳送一個或多個 HTTP 請求訊息。HTTP“伺服器”是一個程式(通常是 Web 伺服器,例如 Apache Web Server 或 Internet Information Services IIS 等),它接受連線以透過傳送 HTTP 響應訊息來服務 HTTP 請求。
HTTP 使用統一資源識別符號 (URI) 來識別給定的資源並建立連線。連線建立後,**HTTP 訊息**以類似於網際網路郵件 [RFC5322] 和多用途網際網路郵件擴充套件 (MIME) [RFC2045] 使用的格式傳遞。這些訊息包括從客戶端到伺服器的**請求**和從伺服器到客戶端的**響應**,其格式如下:
HTTP-message = <Request> | <Response> ; HTTP/1.1 messages
HTTP 請求和 HTTP 響應使用 RFC 822 的通用訊息格式來傳輸所需的資料。此通用訊息格式包含以下四個專案。
- A Start-line
- Zero or more header fields followed by CRLF
- An empty line (i.e., a line with nothing preceding the CRLF) indicating the end of the header fields
- Optionally a message-body
在以下部分,我們將解釋 HTTP 訊息中使用的每個實體。
訊息起始行
起始行將具有以下通用語法:
start-line = Request-Line | Status-Line
在分別討論 HTTP 請求和 HTTP 響應訊息時,我們將討論請求行和狀態行。現在,讓我們看看請求和響應情況下起始行的示例。
GET /hello.htm HTTP/1.1 (This is Request-Line sent by the client) HTTP/1.1 200 OK (This is Status-Line sent by the server)
報頭欄位
HTTP 報頭欄位提供有關請求或響應,或有關在訊息正文中傳送的物件的必要資訊。有四種類型的 HTTP 訊息報頭:
**通用報頭:**這些報頭欄位對請求和響應訊息都具有通用適用性。
**請求報頭:**這些報頭欄位僅適用於請求訊息。
**響應報頭:**這些報頭欄位僅適用於響應訊息。
**實體報頭:**這些報頭欄位定義有關實體正文的元資訊,或者如果沒有正文,則定義有關請求標識的資源的元資訊。
所有上述報頭都遵循相同的通用格式,每個報頭欄位都包含一個名稱,後跟一個冒號 (**:**),然後是欄位值,如下所示:
message-header = field-name ":" [ field-value ]
以下是各種報頭欄位的示例:
User-Agent: curl/7.16.3 libcurl/7.16.3 OpenSSL/0.9.7l zlib/1.2.3 Host: www.example.com Accept-Language: en, mi Date: Mon, 27 Jul 2009 12:28:53 GMT Server: Apache Last-Modified: Wed, 22 Jul 2009 19:15:56 GMT ETag: "34aa387-d-1568eb00" Accept-Ranges: bytes Content-Length: 51 Vary: Accept-Encoding Content-Type: text/plain
訊息正文
訊息正文部分對於 HTTP 訊息是可選的,但如果可用,則用於攜帶與請求或響應關聯的實體正文。如果關聯了實體正文,則通常**Content-Type** 和**Content-Length** 報頭行指定關聯正文的性質。
訊息正文是承載實際 HTTP 請求資料(包括表單資料和上傳等)和來自伺服器的 HTTP 響應資料(包括檔案、影像等)的部分。下面顯示的是訊息正文的簡單內容:
<html> <body> <h1>Hello, World!</h1> </body> </html>
接下來的兩章將利用上述概念來準備 HTTP 請求和 HTTP 響應。