一、HTTP報文
用於HTTP協議交互的信息被稱爲HTTP報文。請求端(客戶端)的HTTP報文叫作請求報文,響應端(服務端)的叫作響應報文。
二、請求報文及響應報文的結構
數據組成:
- 請求行:包含用於請求的方法,請求URI和HTTP版本
- 狀態行:包含代表響應結果的狀態碼,緣由短語和HTTP版本
- 首部字段:包含表示請求和響應的各類條件和屬性的各種首部(通常有4種首部,分別是:通用首部、請求首部、響應首部和實體首部)
- 其餘:可能包含HTTP的RFC裏未定義的首部(Cookie等)
請求報文
請求行-->請求首部字段-->通用首部字段-->實體首部字段-->其餘
複製代碼
響應報文
狀態行-->響應首部字段-->通用首部字段-->實體首部字段-->其餘
複製代碼
三、編碼提高傳輸速率
- 報文(message):是HTTP通訊中的基本單位,由8位組字節流(octet sequence,其中octet爲8個比特)組成,經過HTTP通訊傳輸
- 實體(entity):做爲請求或響應的有效載荷數據(補充項)被傳輸,其內容由實體首部和實體主體組成
- 壓縮傳輸的內容編碼:gzip(GNU zip)、compress(UNIX 系統的標準壓縮)、deflate(zlib)、identity(不進行編碼)
- 分割發送的分塊傳輸編碼
四、發送多種數據的多部分對象集合
HTTP協議中採用了多部分對象集合,發送的一份報文主體內可含有多類型實體。一般是在圖片或文本文件等上傳時使用
- multipart/form-data:在Web表單上傳時使用
- multipart/byteranges:狀態碼206(Partial Content ,部份內容)響應報文包含了多個範圍的內容時使用
五、獲取部份內容的範圍請求
執行範圍請求時,會用到首部字段Range來指定資源的byte範圍
Range: bytes=5001-10000
複製代碼
Range: bytes=5001-
複製代碼
- 從一開始到3000字節和5000~7000字節的多重範圍
Range: bytes=0-3000, 5000-7000
複製代碼
六、內容協商返回最合適的內容
內容協商會以語言、字符集、編碼方式等爲基準判斷響應的資源。包含在請求報文中的某些首部字段就是判斷的基準:
- Accept
- Accept-Charset
- Accept-Encoding
- Accept-Language
- Content-Language
內容協商技術有如下3種類型:
- 服務器驅動協商(由服務器進行內容協商,以請求的首部字段爲參考,在服務器端自動處理)
- 客戶端驅動協商(由客戶端進行內容協商,用戶從瀏覽器顯示的可選項列表中手動選擇)
- 透明協商(是服務器驅動和客戶端驅動的結合體,是由服務器端和客戶端各自進行內容協商的一種方法)