通信傳輸流
HTTP報(bào)文
- HTTP報(bào)文:用于HTTP協(xié)議交互的信息疆栏。請(qǐng)求端的HTTP報(bào)文叫做請(qǐng)求報(bào)文,相應(yīng)端的叫做響應(yīng)報(bào)文。大致分為報(bào)文首部和報(bào)文主體兩塊蝌焚,兩者由空行(CR+LF)劃分啥纸,通常并不一定有報(bào)文主體号杏。
- 請(qǐng)求行:包含用于請(qǐng)求的方法,請(qǐng)求URI和HTTP版本斯棒。
- 狀態(tài)行:包含表明響應(yīng)結(jié)果的狀態(tài)碼盾致,原因短語(yǔ)和HTTP版本。
-
首部字段:包含表示請(qǐng)求和響應(yīng)的各種條件和屬性的各類(lèi)首部荣暮。
Screen Shot 2017-08-01 at 10.01.50 AM.png
報(bào)文主體和實(shí)體主體的差異
HTTP狀態(tài)返回碼
HTTP首部字段
首部字段類(lèi)型
首部字段根據(jù)實(shí)際用途分為以下4類(lèi)庭惜。
1.通用首部字段:請(qǐng)求報(bào)文和響應(yīng)報(bào)文都會(huì)使用的首部。
2.請(qǐng)求首部字段:從客戶端向服務(wù)器發(fā)送請(qǐng)求報(bào)文時(shí)使用的首部穗酥。補(bǔ)充了請(qǐng)求的附加內(nèi)容护赊,客戶端信息,響應(yīng)內(nèi)容相關(guān)優(yōu)先級(jí)信息砾跃。
3.響應(yīng)首部字段:從服務(wù)端向客服端返回響應(yīng)報(bào)文時(shí)使用的首部骏啰。補(bǔ)充了響應(yīng)的附加信息,也會(huì)要求客戶端附加額外的內(nèi)容信息抽高。
4.實(shí)體首部字段:針對(duì)請(qǐng)求報(bào)文和響應(yīng)報(bào)文的實(shí)體部分使用的首部判耕。補(bǔ)充了資源內(nèi)容更新時(shí)間等與實(shí)體有關(guān)的信息。
首部字段結(jié)構(gòu)
HTTP首部字段是由首部字段名和字段值組成厨内,中間由冒號(hào)“:”分割祈秕。
首部字段名:字段值
Content-Type: text/html
Keep-Alive: timeout =15, max = 100
HTTP首部字段一覽
-
通用首部字段
Screen Shot 2017-08-01 at 4.15.08 PM.png 請(qǐng)求首部字段
- 響應(yīng)首部字段
- 實(shí)體首部字段
通用首部字段
1.Cache-control:控制緩存的行為
緩存請(qǐng)求指令
緩存響應(yīng)指令
2.Conection:控制不再轉(zhuǎn)發(fā)給代理的首部字段渺贤,管理持久連接。
- 控制不再轉(zhuǎn)發(fā)給代理的首部字段
Connection:不再轉(zhuǎn)發(fā)的首部字段名
- 管理持久連接
Connection: close # HTTP/1.1以后都是持久連接
Conntection: Keep-Alive # HTTP/1.1之前的都是非持續(xù)連接
3.Prama:為了兼容HTTP /1.1之前版本的歷史遺留問(wèn)題
該字段请毛,只用在客戶端發(fā)送的請(qǐng)求中志鞍,客戶要求所有的中間服務(wù)器不返回緩存的資源。
Cache-Control: no-cache #一般會(huì)有2個(gè)首部字段
Prama: no-cache
4.Upgrade:用于檢測(cè)HTTP協(xié)議及其他協(xié)議是否可使用更高的版本通信方仿,其參數(shù)值可以用來(lái)指定一個(gè)完全不同的通信協(xié)議固棚。
Upgrade首部字段產(chǎn)生作用的Upgrade對(duì)象僅限于客戶端和鄰接服務(wù)器之間。因此使用首部字段Upgrate時(shí)還需要額外指定Connection:Upgrate仙蚜。
對(duì)于附有首部字段Upgrate的請(qǐng)求此洲,服務(wù)器可用101SwitchingProtocal狀態(tài)碼作為響應(yīng)返回。
5.Waring:通知用戶一些與緩存的相關(guān)的問(wèn)題的警告委粉。
請(qǐng)求首部字段
1.Accept:通知服務(wù)器呜师,用戶能夠處理的媒體類(lèi)型及媒體類(lèi)型的相對(duì)優(yōu)先級(jí)。使用type/subtype形式贾节。
若要設(shè)置優(yōu)先級(jí)汁汗,用q=來(lái)額外表示權(quán)重值, q范圍為0~1栗涂,";"隔開(kāi)
Accept:text/html ;q = 0.5, text/plain
2.Host:若虛擬主機(jī)運(yùn)行在同一個(gè)IP知牌,因此會(huì)使用Host加以區(qū)分。首部字段Host會(huì)告知服務(wù)器斤程,請(qǐng)求的資源所處的互聯(lián)網(wǎng)主機(jī)名和端口號(hào)角寸。
3.Range:告知服務(wù)器資源的指定范圍
Range: bytes =5001 -10000
接受到附帶Range首部字段請(qǐng)求的服務(wù)器,會(huì)在處理請(qǐng)求之后返回狀態(tài)206Partial Content的響應(yīng)忿墅。無(wú)法處理該范圍請(qǐng)求時(shí)扁藕,則返回狀態(tài)碼200OK的響應(yīng)全部資源。
響應(yīng)首部字段
1.ETag:能告訴客戶端實(shí)體標(biāo)識(shí)疚脐。是一種可將資源以字符串形式做唯一標(biāo)識(shí)的方式纹磺。服務(wù)器會(huì)為每份資源分配對(duì)應(yīng)的Tag值。
2.Location:可以將響應(yīng)接受方引導(dǎo)至某個(gè)與請(qǐng)求URL位置不同的資源亮曹。該字段基本配合3xx:Redirection響應(yīng)橄杨,提供重定向的URL。
3.Vary:當(dāng)代理服務(wù)器收到帶有Vary首部字段指定獲取資源的請(qǐng)求時(shí)照卦,如果使用的Accept-Language字段的值相同式矫,那么久直接從緩存返回響應(yīng)。反正役耕,需要從 源服務(wù)器端獲取資源后才能作為響應(yīng)返回 采转。
Vary:Accept-Language