1. HTTP 報文
一般 HTTP 報文分為「頭部 header」和「主體 body」兩部分,但是并不一定要有「主體」部分。
HTTP 報文
請求行
包含請求的方法「GET」、請求路徑「 http://zheteng123.cn/ 」、HTTP 版本「HTTP/1.1」。
狀態行
包含 HTTP 版本「HTTP/1.1」、 表明響應結果的狀態碼「200」、對應狀態碼的說明「OK」。
空行
在報文中,為了能區分出頭部和主體,在兩者之間有一個空行將它們隔開。
2. 編碼提升傳輸效率
常用的編碼方式有:
- gzip(GNU zip)最常用
- compress(UNIX 系統的標準壓縮)
- deflate(zlib)
- identity(不進行編碼)
3. 發送多種數據
MIME(Multipurpose Internet Mail Extensions,多用途因特網郵件擴展)機制,它允許郵件處理文本、圖片、視頻等多個不同類型的數據。
多部分對象集合包含的對象如下。
multipart/form-data
在 Web 表單文件上傳時使用。
multipart/byteranges
狀態碼 206(Partial Content,部分內容)響應報文包含了多個范圍的內容時使用。
4. 獲取部分內容的范圍請求(斷點續傳)
-
5001~10 000 字節
Range: bytes=5001-10000
-
從 5001 字節之后全部的
Range: bytes=5001-
-
從一開始到 3000 字節和 5000~7000 字節的多重范圍
Range: bytes=-3000, 5000-7000
響應會返回狀態碼為 206 Partial Content 的響應報文。另外,對于多重范圍的范圍請求,響應會在首部字段 Content-Type 標明 multipart/byteranges 后返回響應報文。
如果服務器端無法響應范圍請求,則會返回狀態碼 200 OK 和完整的實體內容。
5. 內容協商
內容協商會以響應資源的語言、字符集、編碼方式等作為判斷的基準。
請求頭中可以包含以下字段來作為服務器判斷標準:
- Accept
- Accept-Charset
- Accept-Encoding
- Accept-Language
- Content-Language
內容協商技術有以下 3 種類型:
- 服務器驅動協商(Server-driven Negotiation)由服務器根據請求頭判斷
- 客戶端驅動協商(Agent-driven Negotiation)由客戶端手動選擇
- 透明協商(Transparent Negotiation)有服務器和客戶端共同決定