版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
11:53 下載 15|海納百川:HTTP2019-07-01透視HTTP協(xié) 進(jìn)入課程你好,我是Chrono今天我要與你分享的話題是“海納百川:HTTP的實(shí)體數(shù)8講的篇幅來詳細(xì)解析HTTP協(xié)議里的各種頭字段,包括定就可以完全掌握HTTP協(xié)議。在前面的“基礎(chǔ)篇”里我們了解了HTTP報(bào)文的結(jié)構(gòu),知道一個(gè)HTTP報(bào)文是由“header+body”組成的。但那時(shí)我們主要研究的是header,沒有涉及到body。所以,“進(jìn)階篇”的第一講就從HTTP的body談起。在TCP/IP是“header+body”的格式。但TCP、UDP因?yàn)槭莻鬏攲拥膮f(xié)議,它們不會(huì)關(guān)心body數(shù)據(jù)是什么,只要把數(shù)據(jù)發(fā)送而HTTP協(xié)議則不同,它是應(yīng)用層的協(xié)議,數(shù)據(jù)到達(dá)之后工你可以設(shè)想一下,假如HTTP沒有告知數(shù)據(jù)類型的功能,服以通過檢查數(shù)據(jù)的前幾個(gè)字節(jié)也許就能知道這是個(gè)GIF圖片、或者是個(gè)MP3音樂文件,但這種方式無疑十分低效,幸運(yùn)的是,早在HTTP協(xié)議誕生之前就已經(jīng)有了針對(duì)這種問件可以發(fā)送ASCII碼以外的任意數(shù)據(jù),方案的名字叫做“多用途互聯(lián)網(wǎng)郵件擴(kuò)展”(MultipurposeInternetMailExtensions),簡稱為MIME。MIME是一個(gè)很大的標(biāo)準(zhǔn)規(guī)范,但HTTP只“順手牽羊”取了其中的一部分,用來標(biāo)記body的數(shù)據(jù)類型,這就是我們平??偰苈牭降摹癕IMEtype”。MIME把數(shù)據(jù)分成了八大類,每個(gè)大類下再細(xì)分出多個(gè)子類,形式是“type/subtype”的字符串,巧得很,剛好也符合了HTTP明文的特點(diǎn),所以能夠很容易地納入HTTP字段里。這里簡單列舉一下在HTTP里經(jīng)常遇到的幾個(gè)類別:text/html了,表示超文本文檔,此外還有純文本text/plain、樣式表text/css等。image:即圖像文件,有image/gif、image/jpeg、image/png等。audio/video:音頻和視頻數(shù)據(jù),例如audio/mpeg、video/mp4等。application:數(shù)據(jù)格式不固定,可能是文本也可能是二進(jìn)制,必須由上層應(yīng)用程序來解釋。常見的有application/json,application/javascript、application/pdf么類型,像剛才說的“黑盒”,就會(huì)是application/octet-stream,即不透明的二進(jìn)制數(shù)據(jù)。但僅有MIMEtype還不夠,因?yàn)镠TTP在傳輸時(shí)為了節(jié)約續(xù)“猜”,還需要有一個(gè)“Encodingtype”,告訴數(shù)據(jù)是比起MIMEtype來說,Encodingtype就少了很多,常用gzip:GNUzip壓縮格式,也是互聯(lián)網(wǎng)上最流行的壓縮br:一種專門為HTTP優(yōu)化的新壓縮算法(Brotli)有了MIMEtype和Encodingtype,無論是瀏覽器還是服務(wù)器就都可以輕松識(shí)別出body的類型,也就能夠正確處理HTTP協(xié)議為此定義了兩個(gè)Accept請求頭字段和兩個(gè)Content內(nèi)容協(xié)商”。也就是說,客戶端用Accept什么樣的數(shù)據(jù),而服務(wù)器用Content頭告訴客戶端實(shí)際發(fā)送了什么樣的數(shù)據(jù)。Accept字段標(biāo)記的是客戶端可理解的MIMEtype,可以1Accept:這就是告訴服務(wù)器:“我能夠看懂HTML、XML的文本,還有webp和png1Content-Type:2Content-Type:HTML文件,會(huì)調(diào)用排版引擎渲染出頁面,看到“image/png”就知道是一個(gè)PNG文件,就會(huì)在頁面上Accept-Encodin字段標(biāo)記的是客戶端支持的壓縮格式,例如上面說的gzip、deflate個(gè),服務(wù)器可以選擇其中一種來壓縮數(shù)據(jù),實(shí)際使用的壓縮格式放在響應(yīng)頭字段Content-Encodin里。1Accept-Encoding:gzip,deflate,2Content-Encoding:Accept-Encoding字段,就表示客戶端不支持壓縮數(shù)據(jù);如果響應(yīng)報(bào)文里沒有Content-Encoding字段,就表示響MIMEtype和Encodingtype解決了計(jì)算機(jī)理解body數(shù)了很多不同的語言,雖然都是text/html,但如何讓瀏覽器這實(shí)際上就是“國際化”的問題。HTTP采用了與數(shù)據(jù)類型舉幾個(gè)例子:en表示任意的英語,en-US表示美式英語,en-GB表示英式英語,而zh-CN就表示我們最常使用的漢用的ASCII、漢語世界用的GBK、BIG5,日語世界用的Shift_JIS等。同樣的一段文字,用一種編碼顯示正常,換另所以后來就出現(xiàn)了Unicode和UTF-8,把世界上所有的語言都容納在一種編碼方案里,UTF-8也成為了互聯(lián)網(wǎng)上的標(biāo)同樣的,HTTP協(xié)議也使用Accept請求頭字段和Content1Accept-Language:zh-CN,zh,這個(gè)請求頭會(huì)告訴服務(wù)器:“最好給我zh-CN字,如果沒有就用其他的漢語方言,如果還沒有就給英文”。Language1Content-Language:zh-字符集在HTTP里使用的請求頭字段是但響應(yīng)頭里卻沒有對(duì)應(yīng)的Content-Charset,而是在Content-Type字段的數(shù)據(jù)類型后面用“charset=xxx”來表示,這點(diǎn)需要特別注意。例如,瀏覽器請求GBK或UTF-8的字符集,然后服務(wù)器返回的是UTF-8編碼,就是下面這樣:1Accept-Charset:gbk,utf-2Content-Type:text/html;charset=utf-不過現(xiàn)在的瀏覽器都支持多種字符集,通常不會(huì)發(fā)送Accept-Charset,而服務(wù)器也不會(huì)發(fā)送Content-Language,因?yàn)槭褂玫恼Z言完全可以由字符集推斷出來,所以在請求頭里一般只會(huì)有Accept-Language頭里只會(huì)有Content-Type字段。在HTTP協(xié)議里用Accept、Accept-Encoding、Accept-Language等請求頭字段進(jìn)行內(nèi)容協(xié)商的時(shí)候,還可以用一的“q”是“qualityfactor”權(quán)重的最大值是1,最小值是0.01,默認(rèn)值是1,如果值是0就表示拒絕。具體的形式是在數(shù)據(jù)類型或語言代碼后面加斷句語氣要強(qiáng)于“,”,而在HTTP的內(nèi)容協(xié)商里卻恰好反例如下面的Accept字段:1Accept:它表示瀏覽器最希望使用的是HTML文件,權(quán)重是1,其次是XML文件,權(quán)重是0.9,最后是任意數(shù)據(jù)類型,權(quán)重是0.8。服務(wù)器收到請求頭后,就會(huì)計(jì)算權(quán)重,再根據(jù)自己的實(shí)際情況優(yōu)先輸出HTML或者XML。內(nèi)容協(xié)商的過程是不透明的,每個(gè)Web服務(wù)器使用的算法都不一樣。但有的時(shí)候,服務(wù)器會(huì)在響應(yīng)頭里多加一個(gè)字段,記錄服務(wù)器在內(nèi)容協(xié)商時(shí)參考的請求頭字段,給出一點(diǎn)信息,例如:Vary:Accept-Encoding,User-這個(gè)Vary字段表示服務(wù)器依據(jù)了Accept-Encoding、User-Agent和Accept這三個(gè)頭字段,然后決定了發(fā)回的Vary記”。每當(dāng)Accept等請求頭變化時(shí),Vary也會(huì)隨著響應(yīng)報(bào)文一起變化。也就是說,同一個(gè)URI可能會(huì)有多個(gè)不同服務(wù),這個(gè)之后講“HTTP緩存”時(shí)還會(huì)再提到。上面講完了理論部分,接下來就是實(shí)際動(dòng)手操作了??梢杂梦覀兊膶?shí)驗(yàn)環(huán)境,在www目錄下有一個(gè)mime預(yù)先存放了幾個(gè)文件,可以用URI“/15-1?name=file”的形式訪問,例如:/15-/15-在Chrome里打開開發(fā)者工具,就能夠看到Accept和Content頭:你也可以把任意的文件拷貝到mime目錄下,比如壓縮包、MP3、圖片、視頻等,再用Chrome訪問,觀察更多的MIMEtype。戶網(wǎng)站,看看真實(shí)網(wǎng)絡(luò)世界里的HTTP報(bào)文是什么樣子的。今天我們學(xué)習(xí)了HTTP里的數(shù)據(jù)類型和語言類型,在這里為數(shù)據(jù)類型表示實(shí)體數(shù)據(jù)的內(nèi)容是什么,使用的是MIMEtype,相關(guān)的頭字段是Accept和Content-Type;Accept-Encoding和Content-Encoding;Accept-Language和Content-Language;Accept-Charset和Content-Type;客戶端需要在請求頭里使用Accept等頭字段與服務(wù)器進(jìn)Accept等頭字段可以用“,”順序列出多個(gè)可能的選項(xiàng),試著解釋一下這個(gè)請求頭“Accept-Encoding:gzip,deflate;q=1.0,*;q=0.5,br;q=0”,再模擬一下服務(wù)器假設(shè)你要使用POST方法向服務(wù)器提交一些JSON格式試著用快遞發(fā)貨收貨比喻一下MIME、Encoding等概?版權(quán)歸極客邦科技所有,未經(jīng)許可不得傳播售賣。頁面已增加防盜追蹤,上一 14|HTTP有哪些優(yōu)點(diǎn)?又有哪些缺點(diǎn)下一 16|把大象裝進(jìn)冰箱:HTTP傳輸大文件的方寫留寫留2019-07-展開52019-07-展開作者回復(fù):thanks52019-07-現(xiàn)在很多小文件比如圖片都往云存上放了千萬指定正確content-type22019-07-HTTP/1.1200展開22019-07-q展開12019-07-12019-07-作者回復(fù):每建立一個(gè)連接就需要tcp握手,對(duì)同一個(gè)ip+端口,瀏覽器通常最多建立62019-07-Content-type:application/json;charset=utf-Accept-language:zh-CN老師,我在mime中放了1G的MP4展開content-language,post時(shí)應(yīng)該用2019-07-accept而你發(fā)送post請求時(shí),你發(fā)送的數(shù)據(jù)是給服務(wù)器的,這content-type據(jù)類型一樣,你也需要用content-來表明你給別人的數(shù)2019-07-03POST/account/userHTTP/1.1Host:展開作者回復(fù):發(fā)post請求,服務(wù)器也會(huì)有響應(yīng)報(bào)文,所以就需要用accept2019-07-展開2019-07-2019-07-Accept-展開作者回復(fù):132019-07-content-type展開2019-07-展開2019-07-“所以后來就出現(xiàn)了Unicode和UTF-8,把世界上所有的語言都容納在一種編碼方案里,UTF-8這句話最后有點(diǎn)問題吧?Unicode展開utf-8只是編碼方案,2019-07-content-type:application/json;charset=gbk如果有作者回復(fù):對(duì),不過最好還是
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年預(yù)購商品房合同3篇
- 2025年度oem服裝加工與品牌授權(quán)合同范本3篇
- 2024年標(biāo)準(zhǔn)版商品交易協(xié)議書版B版
- 2024年金融教育與普及項(xiàng)目合同3篇
- 2025年度特色餐廳品牌授權(quán)合作協(xié)議3篇
- 2024幼兒園清潔服務(wù)租賃合同
- 2024年離婚協(xié)議書規(guī)范格式3篇
- 2024年礦石物流承運(yùn)協(xié)議標(biāo)準(zhǔn)模板版B版
- 2024購房合同樣書
- 2024年高頻交易系統(tǒng)開發(fā)與授權(quán)合同
- 綠色貸款培訓(xùn)課件
- 2024年七年級(jí)語文上學(xué)期期末作文題目及范文匯編
- 云南省昆明市五華區(qū)2023-2024學(xué)年九年級(jí)上學(xué)期期末英語試卷+
- 2023年生產(chǎn)運(yùn)營副總經(jīng)理年度總結(jié)及下一年計(jì)劃
- 2023年中考語文標(biāo)點(diǎn)符號(hào)(頓號(hào))練習(xí)(含答案)
- 施工圖審查招標(biāo)文件范文
- 新課標(biāo)人教版數(shù)學(xué)三年級(jí)上冊第八單元《分?jǐn)?shù)的初步認(rèn)識(shí)》教材解讀
- 布袋式除塵器制造工序檢驗(yàn)規(guī)定
- 艾滋病、梅毒和乙肝檢測方法介紹及選擇
- 水資源稅納稅申報(bào)表附表
- MF47萬用表組裝與檢測教學(xué)教案
評(píng)論
0/150
提交評(píng)論