HTTP之报文
HTTP 報(bào)文
????用于 HTTP 協(xié)議交互的信息被稱為 HTTP 報(bào)文。請(qǐng)求端(客戶端)的 HTTP 報(bào)文叫做請(qǐng)求報(bào)文,響應(yīng)端(服務(wù)器端)的叫做響應(yīng)
報(bào)文。HTTP 報(bào)文本身是由多行(用 CR+LF 作換行符)數(shù)據(jù)構(gòu)成的字符串文本。
????HTTP 報(bào)文大致可分為報(bào)文首部和報(bào)文主體兩塊。兩者由最初出現(xiàn)的空行(CR+LF)來劃分。通常,并不一定要有報(bào)文主體。
發(fā)送多種數(shù)據(jù)的多部分對(duì)象集合
發(fā)送郵件時(shí),我們可以在郵件里寫入文字并添加多份附件。這是因?yàn)椴捎昧?MIME(Multipurpose Internet Mail Extensions,多用途因特網(wǎng)郵件擴(kuò)展)機(jī)制,它允許郵件處理文本、圖片、視頻等
多個(gè)不同類型的數(shù)據(jù)。例如,圖片等二進(jìn)制數(shù)據(jù)以 ASCII 碼字符串編碼的方式指明,就是利用 MIME 來描述標(biāo)記數(shù)據(jù)類型。而在MIME 擴(kuò)展中會(huì)使用一種稱為多部分對(duì)象集合(Multipart)的方法
,來容納多份不同類型的數(shù)據(jù)。相應(yīng)地,HTTP 協(xié)議中也采納了多部分對(duì)象集合,發(fā)送的一份報(bào)文主體內(nèi)可含有多類型實(shí)體。通常是在圖片或文本文件等上傳時(shí)
使用。多部分對(duì)象集合包含的對(duì)象如下。
- multipart/form-data
在 Web 表單文件上傳時(shí)使用。
- multipart/byteranges
狀態(tài)碼 206(Partial Content,部分內(nèi)容)響應(yīng)報(bào)文包含了多個(gè)范圍的內(nèi)容時(shí)使用。
- multipart/form-data
在 HTTP 報(bào)文中使用多部分對(duì)象集合時(shí),需要在首部字段里加上Content-type。有關(guān)這個(gè)首部字段,我們稍后講解。
內(nèi)容協(xié)商返回最合適的內(nèi)容
同一個(gè) Web 網(wǎng)站有可能存在著多份相同內(nèi)容的頁面。比如英語版和中文版的 Web 頁面,它們內(nèi)容上雖相同,但使用的語言卻不同。
當(dāng)瀏覽器的默認(rèn)語言為英語或中文,訪問相同 URI 的 Web 頁面時(shí),則會(huì)顯示對(duì)應(yīng)的英語版或中文版的 Web 頁面。這樣的機(jī)制稱為內(nèi)容協(xié)商(Content Negotiation)
內(nèi)容協(xié)商機(jī)制是指客戶端和服務(wù)器端就響應(yīng)的資源內(nèi)容進(jìn)行交涉,然后提供給客戶端最為適合的資源。內(nèi)容協(xié)商會(huì)以響應(yīng)資源的
語言、字符集、編碼方式等作為判斷的基準(zhǔn)。包含在請(qǐng)求報(bào)文中的某些首部字段(如下)就是判斷的基準(zhǔn)。這些首部字段的詳細(xì)說明請(qǐng)參考下一章。
Accept
Accept-Charset
Accept-Encoding
Accept-Language
Content-Language
HTTP 報(bào)文內(nèi)的 HTTP 信息
狀態(tài)碼告知從服務(wù)器端返回的請(qǐng)求結(jié)果
狀態(tài)碼的職責(zé)是當(dāng)客戶端向服務(wù)器端發(fā)送請(qǐng)求時(shí),描述返回的請(qǐng)求結(jié)果。借助狀態(tài)碼,用戶可以知道服務(wù)器端是正常處理了請(qǐng)求,還是出現(xiàn)了錯(cuò)誤。
通信數(shù)據(jù)轉(zhuǎn)發(fā)程序 :代理、網(wǎng)關(guān)、隧道
- ????代理服務(wù)器的基本行為就是接收客戶端發(fā)送的請(qǐng)求后轉(zhuǎn)發(fā)給其他服務(wù)器。代理不改變請(qǐng)求 URI,會(huì)直接發(fā)送給前方持有資源的目
標(biāo)服務(wù)器。持有資源實(shí)體的服務(wù)器被稱為源服務(wù)器。從源服務(wù)器返回的響應(yīng)經(jīng)過代理服務(wù)器后再傳給客戶端。
在 HTTP 通信過程中,可級(jí)聯(lián)多臺(tái)代理服務(wù)器。請(qǐng)求和響應(yīng)的轉(zhuǎn)發(fā)會(huì)經(jīng)過數(shù)臺(tái)類似鎖鏈一樣連接起來的代理服務(wù)器。轉(zhuǎn)發(fā)時(shí),需要附加 Via 首部字段以標(biāo)記出經(jīng)過的主機(jī)信息。
使用代理服務(wù)器的理由有:利用緩存技術(shù)(稍后講解)減少網(wǎng)絡(luò)帶寬的流量,組織內(nèi)部針對(duì)特定網(wǎng)站的訪問控制,以獲取訪問日志為主要目的,等等。代理有多種使用方法,按兩種基準(zhǔn)分類。一種是是否使用緩存,
另一種是是否會(huì)修改報(bào)文。
緩存代理
代理轉(zhuǎn)發(fā)響應(yīng)時(shí),緩存代理(Caching Proxy)會(huì)預(yù)先將資源的副本(緩存)保存在代理服務(wù)器上。當(dāng)代理再次接收到對(duì)相同資源的請(qǐng)求時(shí),就可以不從源服務(wù)器那
里獲取資源,而是將之前緩存的資源作為響應(yīng)返回。
透明代理
轉(zhuǎn)發(fā)請(qǐng)求或響應(yīng)時(shí),不對(duì)報(bào)文做任何加工的代理類型被稱為透明代理(Transparent Proxy)。反之,對(duì)報(bào)文內(nèi)容進(jìn)行加工的代理被稱為非透明代理。
- 網(wǎng)關(guān)的工作機(jī)制和代理十分相似。而網(wǎng)關(guān)能使通信線路上的服務(wù)器提供非 HTTP 協(xié)議服務(wù)。
利用網(wǎng)關(guān)能提高通信的安全性,因?yàn)榭梢栽诳蛻舳伺c網(wǎng)關(guān)之間的通信線路上加密以確保連接的安全。比如,網(wǎng)關(guān)可以連接數(shù)據(jù)庫(kù),使用 SQL 語句查詢數(shù)據(jù)。另外,在 Web 購(gòu)物網(wǎng)站上進(jìn)行信用
卡結(jié)算時(shí),網(wǎng)關(guān)可以和信用卡結(jié)算系統(tǒng)聯(lián)動(dòng)。
- 隧道可按要求建立起一條與其他服務(wù)器的通信線路,屆時(shí)使用 SSL 等加密手段進(jìn)行通信。隧道的目的是確保客戶端能與服務(wù)器進(jìn)行安全的通信。
???隧道本身不會(huì)去解析 HTTP 請(qǐng)求。也就是說,請(qǐng)求保持原樣中轉(zhuǎn)給之后的服務(wù)器。隧道會(huì)在通信雙方斷開連接時(shí)結(jié)束。
轉(zhuǎn)載于:https://www.cnblogs.com/duan2/p/7485250.html
總結(jié)
- 上一篇: 计算机实战项目、课程设计、毕业设计之[含
- 下一篇: 阿里云iconfont使用方法