成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

前端必知必會HTTP請求系列(三)HTTP報文內(nèi)的http信息

Invoker / 2179人閱讀

摘要:報文用于協(xié)議交互的信息被稱為報文?,F(xiàn)在出現(xiàn)的各種首部字段及狀態(tài)碼稍后會闡述。狀態(tài)碼響應(yīng)報文包含了多個范圍的內(nèi)容使用。如果服務(wù)器無法響應(yīng)范圍請求,則會返回狀態(tài)碼和完整的實體內(nèi)容。

http報文

用于HTTP協(xié)議交互的信息被稱為HTTP報文。請求端的http報文叫做請求報文,響應(yīng)端的叫做響應(yīng)報文,HTTP報文本身有多行數(shù)據(jù)構(gòu)成的字符串文本。

http報文大致可分為報文首部和報文主體兩塊,報文主體兩塊。兩者由最初出租。出現(xiàn)的空行來劃分,通常并不一定要有報文主體。

請求報文及響應(yīng)報文的結(jié)構(gòu)

我們來看一下請求報文和響應(yīng)報文的結(jié)構(gòu)。
請求報文和響應(yīng)報文的首部內(nèi)容由以下數(shù)據(jù)組成。現(xiàn)在出現(xiàn)的各種首部字段及狀態(tài)碼稍后會闡述。

新浪微博請求示例


請求行

包含用于請求方法,請求URL和HTTP請求

狀態(tài)行

包含表明響應(yīng)結(jié)果的狀態(tài)碼,原因短語和HTTP版本

首部字段

包含表示,請求和響應(yīng)的各種條件和屬性的各類首部
一般有四種首部分別是通用首部,請求首部,響應(yīng)首部,實體守護

其他

能包含HTTP的RFC,里面未定義的首部

編碼提升傳輸效率

HTTP在傳輸數(shù)據(jù)時可以按照數(shù)據(jù)原貌直接傳輸,但也可以。在傳輸過程,通過編碼提升傳輸效率。通過在傳輸是編碼,能有效地處理大量的訪問請求,但是編碼的操作需要計算機來完成,因此會消耗更多的CPU資源

報文主體和實體主體的差異

報文

是HTTP通信中的基本單位,是由八位組節(jié)流。組成通過HTTP通信傳輸

實體

作為請求或響應(yīng)的有效載荷,數(shù)據(jù)被傳輸,其內(nèi)容有實體守護和出題主體組成
HTTP的主體用于傳輸請求或響應(yīng)的實體主體。
通常報文主體等于實體主體。只有當天傳輸中進行編碼操作時,實體主體的內(nèi)容發(fā)生變化,才導致他和報文主體產(chǎn)生差異
報文和實體這兩個術(shù)語在之后會經(jīng)常出現(xiàn),請事先理解兩者的差異

壓縮傳輸?shù)膬?nèi)容編碼

像待發(fā)送郵件內(nèi)增加附件時,為了使郵件容量變小,我們會先用zip壓縮文件之后再添加附件發(fā)送
HTTP協(xié)議中有一種被稱為內(nèi)容編碼的功能,也能進行類似的操作,內(nèi)容編碼指明應(yīng)用在實體內(nèi)容上的編碼格式,并保持實體信息原樣壓縮,內(nèi)容編碼后的實體由客戶端接收并負責解碼

常用的內(nèi)容編碼有以下幾種

gzip

comperss(UNIX 系統(tǒng)的標準壓縮)

deflate(zlib)

identity(不進行編碼)

分割發(fā)送的分塊傳輸編碼

在HTTP通信過程中,請求的編碼實體資源尚未全部傳輸完成,之前瀏覽器無法顯示請求頁面,在傳輸大容量數(shù)據(jù)時,通過把數(shù)據(jù)分割成多塊,能夠讓瀏覽器逐步顯示頁面
這種把實體分塊的功能稱之為分塊傳輸編碼


分塊傳輸編碼會將實體主體分成多個部分,每一塊都會用16進制來標記塊大小,而實體主體最后一塊會使用“0(CR+LF)”來標記
使用分塊傳輸編碼的實體主題,會有接收的客戶端,負責解碼,恢復(fù)到編碼前的實體主體
HTTP1.1中存在一種稱為傳輸編碼(transfer coding)的機制,他可以在通信時按某種編碼方式傳輸,但指定一多用于分塊傳輸編碼中

發(fā)送多種數(shù)據(jù)的多部分對象集合

發(fā)送郵件時,我們可以在郵件里寫入文字并添加多份附件。這是因為采用了MIME(Multipurpose Internet Mail Extensions, 多用途因特網(wǎng)郵件擴展)機制。它允許郵件處理文本,圖片,視頻等多個不同類型的數(shù)據(jù)。例如,圖片等二進制數(shù)據(jù)以ASCII碼字符串編碼的方式指明,就是利用MIME來描述標記數(shù)據(jù)類型。而在MIME擴展中會使用一種稱為多部分對象集合(Multipart)的方法,來容納多份不同類型的數(shù)據(jù)。
相應(yīng)的HTTP協(xié)議中也采納了多部分對象集合,發(fā)送的一份報文主體可含有多類型實體。通常是在圖片或文本文件等上傳時使用。
多部分對象集合包含的對象如下。

multipart/form-data

在web表單上傳時使用。

multipart/byteranges

狀態(tài)碼206響應(yīng)報文包含了多個范圍的內(nèi)容使用。
在HTTP報文中使用多部分對象集合時需要在首部字段里面加Content-type。有關(guān)這舍不得知道,我們稍后講解
使用boundary字符串來劃分多部分對象集合指令的各類實體,在boundary字符串指定的各個實體的起始行之前插入“--”標記(例如:--AaB03x、--THIS_STRING_SEPARATES)而在多部分對象集合對應(yīng)的字符串的最后,插入“--”標記作為結(jié)束
多部分對象集合的每個部分類型中都可以含有首部字段,另外可以在某個部分中嵌套,使用多部分對象汽車。

獲取部分內(nèi)容的范圍請求

以前,用戶不能使用現(xiàn)在這種高速的帶寬訪問互聯(lián)網(wǎng),當時,下載一個尺寸稍微大的圖片或者文件就已經(jīng)很吃力了。如果下載過程中遇到網(wǎng)絡(luò)中斷的情況。那就必須重頭開始,為了解決上面的這個問題,需要一種可恢復(fù)的機制,所謂恢復(fù)是指能從之前下載中斷處恢復(fù)下載。
實現(xiàn)該功能需要指定下載實體的范圍。像這樣,指定范圍發(fā)送的請求叫做范圍請求(Range Request)。
對一份10000字節(jié)大小的資源,如果使用范圍請求,可以之請求5001~10000字節(jié)的資源。
執(zhí)行范圍請求時,會用到首部字段Rang 來指定資源的byte范圍。byte范圍的指定形式如下:

5001-10000字節(jié)

Range: bytes=5001-10000

從5001字節(jié)之后全部的

Range: bytes=5001-

從一個開始到3000字節(jié)和5000~7000字節(jié)的多重范圍

Range: bytes=0-3000, 5000-700

針對范圍請求,響應(yīng)會返回狀態(tài)碼為206 Partial Content 的響應(yīng)報文。另外,對于多重范圍的范圍請求,響應(yīng)會在首部字段Content-Type標明multipart/byteranges后返回響應(yīng)的報文。
如果服務(wù)器無法響應(yīng)范圍請求,則會返回狀態(tài)碼200 ok 和完整的實體內(nèi)容。

內(nèi)容協(xié)商返回最合適的內(nèi)容

同一個web網(wǎng)站有可能存在著多份相同內(nèi)容的頁面。比如英語版和中文版的web頁面,他們內(nèi)容雖然相同,但使用的語言卻不同。
當瀏覽器的默認語言為英語或者是中文的時候,訪問相同的RUI的web頁面時,則會顯示對應(yīng)的英語版或中文版的web頁面。這樣的機制稱為內(nèi)容協(xié)商。
內(nèi)容協(xié)商機制是指客戶端和服務(wù)端就響應(yīng)的資源進行交涉,然后提供給客戶端最為適合的資源。內(nèi)容協(xié)商會以語言、字符集、編碼方式等為基準判斷響應(yīng)的資源。
包含在請求報文中的某些首部字段就是判斷的基準。這些首部字段的詳細說明請參考下一部分的內(nèi)容

Accept

Accept-Charset

Accept-Encoding

Accept-Language

Content-Language

內(nèi)容協(xié)商技術(shù)有以下三種類型。
服務(wù)器協(xié)商(Server-driven Negotiation)
由服務(wù)器端進行內(nèi)容協(xié)商。以請求的首部字段為參考,在服務(wù)器端自動處理。但對用戶來說,以瀏覽器發(fā)送的信息作為判定的依據(jù),并不一定能篩選出最優(yōu)的內(nèi)容。
客戶端驅(qū)動協(xié)商(Agent-driven Negotiation)
有客戶端進行內(nèi)容協(xié)商的方式。用戶從瀏覽器現(xiàn)實的可選項列表中手動選擇。開可以利用JavaScript腳本在web頁面上自動進行上述選擇。比如按OS得類型或瀏覽器的類型,自行切換成PC版頁面或手機版頁面。
透明協(xié)商(Transparent Negotiation)
是服務(wù)器驅(qū)動和客戶端驅(qū)動的結(jié)合體,是由服務(wù)器端和客戶端各自進行內(nèi)容協(xié)商的一種方法。

前端必知必會HTTP請求系列(一)了解Web及網(wǎng)絡(luò)基礎(chǔ)
前端必知必會HTTP請求系列(二)簡單一點的HTTP協(xié)議
前端必知必會HTTP請求系列(三)HTTP,報文內(nèi)部的HTTP信息
前端必知必會HTTP請求系列(四)返回結(jié)果的HTTP狀態(tài)碼
前端必知必會HTTP請求系列(五)與HTTP協(xié)作的web服務(wù)器
前端必知必會HTTP請求系列(六)HTTP的首部
前端必知必會HTTP請求系列(七)確保Web安全的HTTPS
前端必知必會HTTP請求系列(八)確認訪問用戶身份的認證
前端必知必會HTTP請求系列(九)基于HTTP的功能追加協(xié)議
前端必知必會HTTP請求系列(十)構(gòu)建Web內(nèi)容的技術(shù)
前端必知必會HTTP請求系列(十一)Web攻擊技術(shù)
有什么問題可以到評論區(qū)留言,持續(xù)關(guān)注,不斷更新!

本文作者前端技術(shù)小哥,轉(zhuǎn)載請聲明
新前端技術(shù)交流群召集前端技術(shù)人,這里有Node.js/Vue.js/React.js/React-Native.js/微信小程序 技術(shù)問題交流。歡迎加入!群號:426334209
點擊鏈接加入群聊【前端技術(shù)交流群】http://qm.qq.com/cgi-bin/qm/q...

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/104244.html

相關(guān)文章

  • 前端必知必會HTTP請求系列(二)簡單一點的HTTP協(xié)議

    摘要:通過請求和響應(yīng)的交換達成通信協(xié)議中已經(jīng)規(guī)定了請求是從客戶端發(fā)出,最后由服務(wù)端響應(yīng)這個請求并返回。隨后的字符串指明了請求訪問的資源對象。協(xié)議自身不對請求和響應(yīng)之間的通信狀態(tài)進行保存,也就是說這個級別。從前發(fā)送請求后需等待并受到響應(yīng)。 showImg(https://segmentfault.com/img/bVbmDsG?w=1024&h=538); http協(xié)議用戶客戶端和服務(wù)器之間的...

    xbynet 評論0 收藏0
  • 前端必知必會HTTP請求系列(一)了解Web及網(wǎng)絡(luò)基礎(chǔ)

    摘要:誕生了在深入學習之前我們來了解一下他的背景,同時了解一下當時制定的初衷,這樣有助于我們更好的理解。為知識共享而規(guī)劃的在年月,互聯(lián)網(wǎng)還只屬于少數(shù)人,在互聯(lián)網(wǎng)的前期,誕生了。的成長時代年月,成功研發(fā)了世界上第一臺服務(wù)器和瀏覽器。 showImg(https://segmentfault.com/img/bVblTgr?w=800&h=400);在當前大前端的環(huán)境下,前后端分離,前后端同構(gòu)等...

    qylost 評論0 收藏0
  • JWT必知必會

    摘要:最近,項目的安全認證機制全面采用。為了伸縮性考慮,采用機制,必然面臨著應(yīng)用狀態(tài)的問題,而且必然牽涉到的復(fù)制。為了安全性考慮,機制僅驗證時天然對免疫。若有可能,使用標志。采用來防止這是因為,在站點上發(fā)起向站點的請求時,站點的同樣會被發(fā)送給。 最近,項目的安全認證機制全面采用JWT?,F(xiàn)在,趁整個工作基本告一段落之際,將一些知識點總結(jié)一下發(fā)布出來。 為什么要遷移? 原因很簡單,就以下幾點: ...

    張金寶 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<