http的Content-Encoding和Content-Type及服務器和客戶端處理流程


比如,A 給 B發送了一條信息:hello,首先,A要告訴B,我給你發的這條數據的類型,不同類型的數據,接收方的處理方式不一樣,hello屬於文本類型,所以Content-Type就要設置成

text-plain; 但是計算機只知道0和1,所以就按照一定的規則把 hello 變成0和1組成的代碼,所使用的規則也要在Content-Type里設置,比如A將hello用iso-8859-1方式編碼轉為0和1的組合,為:

0110100001100101011011000110110001101111,

按照8位1字節來分,可以分成5個字節:

01101000  01100101  01101100  01101100  01101111

       h              e                  l                 l              o

所以,完整的Content-Type應該為:

Content-Type:text/plain;charset=iso-8859-1

接着,假如A還需要對hello進行壓縮呢?於是,A先用壓縮算法對hello進行壓縮,比如A用了gzip算法,完了之后,原先用iso-8859-1方式編碼的hello二進制串已經發生了改變,A不能直接把壓縮后的內容直接發給B,而是應該告訴B,我對傳輸的數據進行了壓縮,

所以A還要設置Content-Encoding為 gzip,體現在A的報文里面為:Content-Encoding: gzip

設置完Content-Type和Content-Encoding,A就把hello發給了B。

當B接收到A發送的數據后,先看Content-Encoding有沒有值,

這里由於A已經設置了Content-Encoding:gzip,所以B首先要對A發送的內容進行解壓縮,解壓縮的算法和A采取的壓縮算法要對應,這里B就采取了gzip的解壓算法,得到了壓縮之前的一串0和1組成的代碼(0110100001100101011011000110110001101111),然后B就能順利地按照每8位一字節的方式來解析這串2進制代碼,B先看Content-Type第一個分號前的內容是

text/plain,知道A這是發送了一段文本數據,接着看分號后面是

charset=iso-8859-1,知道了A是用iso-8859-1方式編碼的,那么B就相應的用iso-8859-1的方式來解碼,最后得到人類可識別的數據 ”hello”
————————————————
版權聲明:本文為CSDN博主「偏執的執」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/qq_34967644/article/details/86680061


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM