HTTP報文內的HTTP信息

HTTP報文:用於HTTP協議交互的信息,是由多行數據構成的字符串文本(用CR+LF做換行符)。瀏覽器

結構:報文首部+空行+報文主體(非必需)服務器

請求報文:客戶端的HTTP報文。  報文首部的內容:請求行,請求首部字段,通用首部字段,實體首部字段,其餘。網絡

響應報文:服務器端的HTTP報文。 報文首部的內容:狀態行,響應首部字段,通用首部字段,實體首部字段,其餘。ide

 

編碼提高傳輸速率編碼

HTTP在傳輸數據時能夠進行編碼來提高傳輸速率。編碼的操做須要計算機來完成,所以會消耗更多的CPU等資源。spa

內容編碼指明應用在實體內容上的編碼格式,並保持實體信息原樣壓縮。內容編碼後的實體由客戶端接受並負責解碼。code

常見的內容編碼有:gzip(GNU zip)、compress(UNIX系統的標準壓縮)、deflate(zlib)、identity(不進行編碼)。orm

 

分塊傳輸編碼(Chunked Transfer Coding):一種把實體主體分塊的功能。對象

分塊傳輸編碼會將實體主體分紅多個部分(塊)。每一塊都會用十六進制來標記塊的大小,而實體主體的最後一塊會用「0(CR+LF)」來標記。blog

由客戶端進行解碼。

HTTP/1.1中存在傳輸編碼(Transfer Coding)的機制。它能夠在通訊時按照某種編碼方式傳輸,但只定義做用域分塊傳輸編碼中。

 

發送多種數據的多部分對象集合

在HTTP報文中使用多部分對象集合時,須要在首部字段里加上Content-type。

multipart/form-data:在Web表單文件上傳時使用。

multipart/byteranges:狀態碼206(Partial Content,部份內容)響應報文包含了多個範圍的內容時使用。

 

範圍請求(Range Request)

問題:下載一個圖片發生中斷時,須要從新下載。

解決:指定下載的實體範圍。

好比:對於一個1000字節的圖片,下載到一半時發生網絡中斷,待網絡恢復時能夠只請求下載501~1000字節內的資源。

執行範圍請求時,會用到首部字段Range來指定資源的byte範圍。

#5001~10000字節
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和完整的實體內容。

 

內容協商(Content Negotiation)

內容協商機制是指客戶端和服務器端就響應的資源內容進行交涉,而後提供給客戶端最爲適合的資源。

用處:當瀏覽器的默認語言爲英語或中文,訪問相同URI的Web頁面,會顯示對應的英語班或中文版Web頁面。

三種類型:

1.服務器驅動協商(Server-driver Negotiation):由服務器端進行內容協商。以瀏覽器發送的首部字段做爲斷定的依據,並不必定能篩選出最優的內容。

2.客戶端驅動協商(Agent-driver Negotiation):由客戶端進行內容協商的方式。用戶從瀏覽器顯示的可選列表中手動選擇。

3.透明協商(Transparent Negotiation):是服務器驅動和客戶端驅動的結合體,由服務器端和客戶端各自進行內容協商的一種方法。

相關文章
相關標籤/搜索