HTTP協(xié)議

?HTTP協(xié)議又叫超文本傳輸協(xié)議,該協(xié)議是工作在應(yīng)用層。

HTTP的作用

? ? ? ? ?當(dāng)兩臺(tái)計(jì)算機(jī)使用HTTP協(xié)議通信時(shí),一方必定為客戶端,另一方必定為服務(wù)器端。而HTTP卻能明確的區(qū)分出那方是客戶端,那方是服務(wù)器端。HTTP協(xié)議規(guī)定請(qǐng)求是從客戶端發(fā)出,服務(wù)器響應(yīng)請(qǐng)求返回(所以TCP的三次握手是從客戶端先發(fā)起請(qǐng)求的)。

????????一個(gè)請(qǐng)求報(bào)文是由5部分組成。他們分別是URL,協(xié)議版本號(hào),請(qǐng)求首部字段和實(shí)體內(nèi)容組成。

? ? ? ? 一個(gè)響應(yīng)報(bào)文是由5部分構(gòu)成。他們分別是協(xié)議版本,狀態(tài)碼,狀態(tài)碼的原因短語,響應(yīng)首部字段和主體。

HTTP報(bào)文分為請(qǐng)求報(bào)文和響應(yīng)報(bào)文。

在客戶端發(fā)起的HTTP請(qǐng)求叫做請(qǐng)求報(bào)文,請(qǐng)求報(bào)文的結(jié)構(gòu)為,


在服務(wù)器端的響應(yīng)報(bào)文,響應(yīng)報(bào)文的結(jié)構(gòu)為,


HTTP協(xié)議的特點(diǎn)?

HTTP是無狀態(tài)的,也就是說HTTP協(xié)議自身不會(huì)對(duì)請(qǐng)求和響應(yīng)之間的狀態(tài)進(jìn)行保存。每當(dāng)有新的請(qǐng)求就會(huì)產(chǎn)生新的響應(yīng),協(xié)議本身并不保留之前的一切請(qǐng)求。

HTTP的方法都有哪些?

get(獲取資源),post(傳輸實(shí)體主體),put(傳輸文件),head(獲得報(bào)文首部),delete(刪除文件),trace(追蹤路徑)

? ? get和post的區(qū)別

1.最直觀的區(qū)別就是GET把參數(shù)包含在URL中,POST通過request body傳遞參數(shù)。

? ? ? ?2.本質(zhì)是一樣的

? ? ? ? ? ????http的底層是tcp,tcp的作用傳輸數(shù)據(jù) ,get是把傳輸?shù)臄?shù)據(jù)放到url中方便記錄。

????????post方式是把數(shù)據(jù)放到requestbody 中

? ? ? ? 3.url中的數(shù)據(jù)大多數(shù)瀏覽器規(guī)定為2k,大多數(shù)的服務(wù)器最多處理64k大小的數(shù)據(jù),超過的部分,恕不處理。

????????4.Get方式會(huì)把 httpheader 和 data 一并發(fā)過去,服務(wù)器響應(yīng)200 返回?cái)?shù)據(jù)。

????????Post方式瀏覽器先發(fā)送header 服務(wù)器響應(yīng)100 瀏覽器在發(fā)送data 返回?cái)?shù)據(jù)。


常見返回結(jié)果的HTTP狀態(tài)碼

? ??200? 表示客戶端發(fā)送的請(qǐng)求被服務(wù)器端正常的處理。

? ? 204? 表示服務(wù)器連接的請(qǐng)求成功處理,但在返回的報(bào)文中不含實(shí)體的主體部分。

? ? ? ? ? ? 返回204,瀏覽器頁面不發(fā)生跟新。

? ? 206? 表示客戶端進(jìn)行了范圍請(qǐng)求,而服務(wù)器執(zhí)行了這部分的GET請(qǐng)求。

? ? 301 永久性重定向,該狀態(tài)碼表示請(qǐng)求資源已被分配了新的URL,以后使用資源時(shí)現(xiàn)在的URL? ?

? ? 302? 臨時(shí)性重定向,表示請(qǐng)求的資源被分配了新的URL,希望用戶本次使用新的URL。

? ? 303? 該狀態(tài)碼表示請(qǐng)求的資源存在一個(gè)新的URL,應(yīng)使用GET方法定向獲取請(qǐng)求資源。

? ? 304? 該狀態(tài)碼返回時(shí),不包含響應(yīng)主體部分。

? ? 307? ?臨時(shí)重定向,該狀態(tài)碼和302的狀態(tài)碼含義相同,而307會(huì)準(zhǔn)照瀏覽器的標(biāo)準(zhǔn),不會(huì)從POST裝換為GET。? ?

? ? 400 改狀態(tài)碼表示請(qǐng)求中存在語法錯(cuò)誤。

? ? 401 改狀態(tài)碼表示發(fā)送的請(qǐng)求需要通過HTTP認(rèn)證的認(rèn)證信息。另外若之前進(jìn)行過1次請(qǐng)求, 則表示用戶認(rèn)證失敗。

? ? 403 該狀態(tài)碼表示請(qǐng)求的資源被服務(wù)器拒絕了。

? ? 404 該狀態(tài)碼表示服務(wù)器上無法找到請(qǐng)求資源。

? ? 500 該狀態(tài)碼表示服務(wù)器在執(zhí)行請(qǐng)求時(shí)發(fā)生了錯(cuò)誤。

????503 該狀態(tài)碼表示服務(wù)器暫時(shí)處于超負(fù)載或者停機(jī)維護(hù),現(xiàn)在無法處理請(qǐng)求。

HTTP1.0和HTTP1.1的區(qū)別

? ? ? ? 在HTTP1.0版本中每進(jìn)行一次HTTP通信就要建立和斷開一次TCP鏈接。在使用瀏覽器包含多張圖片的HTML頁面時(shí),在發(fā)生請(qǐng)求該HTML資源時(shí)會(huì)增加通信量的開銷。而HTTP1.1版本采用了持久鏈接。建立好TCP鏈接可以進(jìn)行多次HTTP請(qǐng)求,持久鏈接好處減少了重復(fù)建立和開銷造成額外資源的浪費(fèi)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容