日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Http协议(3)—HTTP实体和编码

發(fā)布時(shí)間:2023/12/10 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Http协议(3)—HTTP实体和编码 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
HTTP實(shí)體實(shí)現(xiàn)目標(biāo) .可以被正確識(shí)別(通過Content-Type和Content-Launage)
.可以被正確解包(通過Content-Lenght首部和Content-Encoding首部)
.是最新的(通過實(shí)體驗(yàn)證碼和緩存過期控制)
.符合用戶需要(基于Accept系列的內(nèi)容協(xié)商首部)
.在網(wǎng)絡(luò)上可以快速有效的傳輸(通過范圍請(qǐng)求、差異編碼以及其他數(shù)據(jù)壓縮方法)
.完整到達(dá)、未被篡改(通過傳輸編碼首部和Content-MD5校驗(yàn)和首部)

一、報(bào)文是箱子,實(shí)體是貨物 1.HTTP基本實(shí)體首部
.Content-Type
實(shí)體所承載對(duì)象的類型
.Content-Length
實(shí)體主體的長(zhǎng)度或大小
.Content-Launage
與所傳送實(shí)體最相配的語(yǔ)言
.Content-Encoding
實(shí)體數(shù)據(jù)是不是已經(jīng)被壓縮
.Content-Location
備用位置
.Content-Range
如果這是部分實(shí)體,則說明它是整體的哪部分
.Content-MD5
實(shí)體主體內(nèi)容的校驗(yàn)和
.Last-Modified
所傳輸?shù)膬?nèi)容在服務(wù)器上創(chuàng)建或最后修改的日期
.Expires
實(shí)體數(shù)據(jù)將要失效的日期
.Allow
該資源所允許的各種請(qǐng)求方法,例如,GET、Post等
.ETag
這份文檔特定實(shí)例的唯一驗(yàn)證碼
.Cache-Control
應(yīng)該如何緩存該文檔

2.實(shí)體主體

二、Content-Length:實(shí)體的大小 1.檢測(cè)截尾
客戶端需要通過Content-Length來檢測(cè)報(bào)文結(jié)尾以區(qū)分到底是報(bào)文結(jié)束時(shí)正常的連接關(guān)閉
還是報(bào)文傳輸時(shí)服務(wù)器崩潰而導(dǎo)致的連接關(guān)閉
緩存代理服務(wù)器不會(huì)為沒有Content-Length首部的HTTP主題作緩存
2.錯(cuò)誤的Content-Length

3.Content-Length與持久連接
因?yàn)槌志眠B接,客戶端無法通過連接關(guān)閉來判斷報(bào)文是否結(jié)束,故必須帶有Content-Length 首部.
但是當(dāng)分塊編碼時(shí)可以沒有Content-Length首部,因?yàn)閿?shù)據(jù)分為一系列的塊來傳送,每塊都???? 有大小說明

4.內(nèi)容編碼
如果對(duì)主體進(jìn)行了內(nèi)容編碼(壓縮),則Content-Length就是編碼后的主體的長(zhǎng)度

5.確定實(shí)體主體長(zhǎng)度的規(guī)則
a.如果特定的HTTP報(bào)文類型不允許帶有主體,就忽略Content-Length首部 b.如果報(bào)文中含有描述傳輸編碼的Transfer-Encoding,那實(shí)體就由一個(gè)稱為零字節(jié)塊的
特殊模式結(jié)束
c.如果報(bào)文中含有Content-Length首部,而沒有Transfer-Encoding首部,那么Content- Length的值就是主體的長(zhǎng)度,如果兩者皆有,則應(yīng)該忽略Content-Length的值 d.如果報(bào)文使用了multipart/byteranges媒體類型,并且沒有用Content-Length首部指定 實(shí)體主體長(zhǎng)度,那么多部分報(bào)文的每個(gè)部分都要說明自己的大小? e.如果以上規(guī)則均無法匹配,則就在連接關(guān)閉的時(shí)候結(jié)束? ? ?
三、實(shí)體摘要? ?發(fā)送方在生成初始主體時(shí),生成一個(gè)數(shù)據(jù)校驗(yàn)和,接收方可以通過檢查這個(gè)校驗(yàn)和來捕獲所有 意外的實(shí)體修改?? 服務(wù)器使用Content-MD5首部發(fā)送對(duì)實(shí)體主體運(yùn)行MD5算法

四、媒體類型和字符集 Content-Type指明的是原始主體的媒體類型
1.文本的字符編碼
Content-Type:text/html; charset=xxxxx

2.多部分媒體類型

3.多部分表格提交
Content-Type:multipart/form-data; boundary=[abcdefg......]
boundary表明分隔主題中不同部分所用的字符串
4.多部分范圍響應(yīng)
Content-Type:multipart/byteranges

五、內(nèi)容編碼 1.過程
a.網(wǎng)站服務(wù)器生成原始響應(yīng)報(bào)文,其中有原始的Content-Type和Content-Length首部
b.內(nèi)容編碼服務(wù)器創(chuàng)建編碼后的報(bào)文,并增加Content-Encoding首部,以便接受的應(yīng)用程序 進(jìn)行解碼
c.接收程序得到編碼后的報(bào)文,進(jìn)行解碼,獲得原始報(bào)文

2.內(nèi)容編碼類型

3.Accept-Encoding首部
客戶端會(huì)把自己能夠識(shí)別的編碼列表放在Accept-Encoding首部里發(fā)出去,如果http請(qǐng)求中 沒有包含首部,則表示客戶端可以接受任何編碼方式

六、傳輸編碼和分塊編碼 傳輸編碼與內(nèi)容編碼的區(qū)別:
經(jīng)過內(nèi)容編碼的報(bào)文只是對(duì)報(bào)文的實(shí)體部分進(jìn)行編碼,而對(duì)于經(jīng)過傳輸編碼的報(bào)文,編碼
作用在整個(gè)報(bào)文上,報(bào)文自身的結(jié)構(gòu)發(fā)生了變化

使用傳輸編碼(Transfer-encoding)是為了改變報(bào)文中的數(shù)據(jù)在網(wǎng)絡(luò)上的傳輸方式

1.可靠傳輸
傳輸報(bào)文會(huì)引發(fā)的問題
.未知的尺寸
有些網(wǎng)關(guān)應(yīng)用程序或則內(nèi)容編碼器要想知道報(bào)文的大小,這時(shí)可以采用傳輸編碼來發(fā)
送數(shù)據(jù),并用特別的結(jié)束腳注表明數(shù)據(jù)結(jié)束
.安全性
可以用傳輸編碼把報(bào)文內(nèi)容擾亂,然后在共享的傳輸網(wǎng)絡(luò)上發(fā)送

2.Transfer-Encoding
.Transfer-Encoding: 告知接收方為了可靠的傳輸報(bào)文,已經(jīng)對(duì)其進(jìn)行了何種編碼
.TE:
用在請(qǐng)求首部,告知服務(wù)器可以使用哪些傳輸編碼

3.分塊編碼
.把報(bào)文分割為若干大小已知的塊,塊之間是緊挨著發(fā)送的
.分塊編碼是一種傳輸編碼,是報(bào)文的屬性,而不是主體的屬性
3.1.分塊與持久連接 .若客戶端與服務(wù)器不是持久連接,則服務(wù)端不需要知道它正在讀取的主體的長(zhǎng)度,只需
要讀到服務(wù)器關(guān)閉主體連接為止
.服務(wù)器在寫主體之前必須知道主體的大小,如果服務(wù)器動(dòng)態(tài)創(chuàng)建內(nèi)容,就無法知道長(zhǎng)度, 分塊編碼只要服務(wù)器逐塊發(fā)出并且說明每塊大小即可,服務(wù)器可以用大小為0的塊作為
主體結(jié)束的信號(hào)
3.2.分塊報(bào)文的拖掛

4.內(nèi)容編碼與傳輸編碼的結(jié)合

5.傳輸編碼規(guī)則
.傳輸編碼集合中必須包含分塊,唯一的例外是使用關(guān)閉連接來結(jié)束報(bào)文
.當(dāng)使用分塊傳輸編碼時(shí),它必須是最后一個(gè)作用在報(bào)文中主體之上的
.分塊傳輸編碼不能多次作用到一個(gè)報(bào)文主體之上
以上規(guī)則使得接收方能確定報(bào)文的長(zhǎng)度

七、驗(yàn)證碼與新鮮度 1.新鮮度
.服務(wù)器告知客戶端能夠?qū)?nèi)容緩存多長(zhǎng)時(shí)間,在這個(gè)時(shí)間之內(nèi)是新鮮的
.可以用Expires首部或者Cache-Control

2.有條件的請(qǐng)求和驗(yàn)證碼
有條件的請(qǐng)求:
.當(dāng)資源改變時(shí)才請(qǐng)求副本
.通過If-Modified-Since首部實(shí)現(xiàn)
驗(yàn)證碼:
.弱驗(yàn)證碼
.強(qiáng)驗(yàn)證碼
強(qiáng)驗(yàn)證碼能唯一標(biāo)識(shí)一個(gè)實(shí)例

八、范圍請(qǐng)求

總結(jié)

以上是生活随笔為你收集整理的Http协议(3)—HTTP实体和编码的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。