Http消息是服務器與客戶端之間交換數據的方式
有兩種類型的消息
- 請求:由客戶端發送用來觸發服務器上的一個動作
- 響應:來自服務器的應答
Http請求的構成
- 起始行
<method> <request-URL> <version>
eg: POST/HTTP/1.1
- method
客戶端希望服務器對資源執行的動作。是一個單獨的詞,比如GET、HEAD或POST
method | description |
---|---|
GET | 獲取資源 |
POST | 傳輸實體主體 |
PUT | 傳輸文件 |
HEAD | 獲取報文首部 |
DELETE | 刪除文件 |
OPTIONS | 詢問支持的方法 |
TRACE | 追蹤路徑 |
CONNECT | 要求用隧道協議連接代理 |
- 請求 URL(request-URL)
命名了所請求資源,或者URL路徑組件的完整URL - 版本(version)
-
Headers
HTTP消息頭,以明文的字符串格式傳送,是以冒號分隔的鍵/值對,如:Accept-Charset: utf-8,每一個消息頭最後以回車符(CR)和換行符(LF)結尾。HTTP消息頭結束後,會用一個空白的字段來標識,這樣就會出現兩個連續的CR-LF。
-
Body
不是所有的請求都有body,例如獲取資源的請求,GET, HEAD, DELETE 和OPTIONS,通常它們不需要body。有些請求將數據發送到服務器以便更新數據,常見的情況是POST請求(包含HTML表單數據)
Http響應的構成
- 狀態行(status line)
<協議版本> <狀態碼> <狀態文本>
- 協議版本,通常爲HTTP/1.1
- 狀態碼(status code),表明請求成功或失敗,常見狀態碼是200,404,或302
- 狀態文本(status text)。一個簡短的,純粹的信息,通過狀態碼的文本描述,幫助人們理解該HTTP消息。
-
Headers
response headers遵循和任何其他headers相同的結構:不區分大小寫的字符串,緊跟着的冒號和一個結構取決於header的類型的值。整個header(包括其值)表現爲單行形勢形式。 -
body
不是所有的響應都有body,具有狀態碼(如201和204,)的響應,通常不會有body。