HTTP 通訊過程包括從客戶端發往服務器端的請求及從服務器端返回 客戶端的響應。瀏覽器
一. HTTP報文服務器
二. 請求報文及響應報文的結構ide
請求行:
包含用於請求的方法,請求 URI 和 HTTP 版本。
狀態行
包含代表響應結果的狀態碼,緣由短語和 HTTP 版本。
首部字段
包含表示請求和響應的各類條件和屬性的各種首部。網站
通常有 4 種首部,分別是:通用首部、請求首部、響應首部和實體首部。
其餘可能包含 HTTP 的 RFC 裏未定義的首部(Cookie 等)。編碼
三. 編碼提高傳輸速率spa
1.報文主體和實體主體的差別:orm
報文(message): 是 HTTP 通訊中的基本單位,由 8 位組字節流(octet sequence, 其中 octet 爲 8 個比特)組成,經過 HTTP 通訊傳輸。
實體(entity)做爲請求或響應的有效載荷數據(補充項)被傳輸,其內容由實體首部和實體主體組成。視頻
2.壓縮傳輸的內容編碼對象
gzip(GNU zip)
compress(UNIX 系統的標準壓縮)
deflate(zlib)
identity(不進行編碼)圖片
3.分割發送的分塊傳輸編碼
四.發送多種數據的多部分對象集合
multipart/form-data
在 Web 表單文件上傳時使用。
multipart/byteranges
狀態碼 206(Partial Content,部份內容)響應報文包含了多個範圍的內容時使用。
在 HTTP 報文中使用多部分對象集合時,須要在首部字段里加上 Content-type。使用boundary 字符串來劃分多部分對象集合指明的各種實體。在 boundary 字符串指定的各個實體的起始行以前插入「--」標記(例如:-AaB03x、--THIS_STRING_SEPARATES),而在多部分對象集合對 應的字符串的最後插入「--」標記(例如:--AaB03x--、-THIS_STRING_SEPARATES--)做爲結束。
多部分對象集合的每一個部分類型中,均可以含有首部字段。另外,可 以在某個部分中嵌套使用多部分對象集合。有關多部分對象集合更詳 細的解釋,請參考 RFC2046。
五.獲取部份內容的範圍請求
六.內容協商返回最合適的內容
Accept Accept-Charset
Accept-Encoding
Accept-Language
Content-Language
服務器驅動協商(Server-driven Negotiation)由服務器端進行內容協商。以請求的首部字段爲參考,在服務器端自 動處理。但對用戶來講,以瀏覽器發送的信息做爲斷定的依據,並不 必定能篩選出最優內容。客戶端驅動協商(Agent-driven Negotiation)由客戶端進行內容協商的方式。用戶從瀏覽器顯示的可選項列表中手 動選擇。還能夠利用 JavaScript 腳本在 Web 頁面上自動進行上述選 擇。好比按 OS 的類型或瀏覽器類型,自行切換成 PC 版頁面或手機 版頁面。透明協商(Transparent Negotiation)是服務器驅動和客戶端驅動的結合體,是由服務器端和客戶端各自進 行內容協商的一種方法。