柚子快報激活碼778899分享:網(wǎng)絡(luò)協(xié)議 網(wǎng)絡(luò) HTTP協(xié)議
柚子快報激活碼778899分享:網(wǎng)絡(luò)協(xié)議 網(wǎng)絡(luò) HTTP協(xié)議
1. HTTP-概述
1.1 介紹
HTTP:Hyper Text Transfer Protocol(超文本傳輸協(xié)議),規(guī)定了瀏覽器與服務(wù)器之間數(shù)據(jù)傳輸?shù)囊?guī)則。
http是互聯(lián)網(wǎng)上應(yīng)用最為廣泛的一種網(wǎng)絡(luò)協(xié)議 http協(xié)議要求:瀏覽器在向服務(wù)器發(fā)送請求數(shù)據(jù)時,或是服務(wù)器在向瀏覽器發(fā)送響應(yīng)數(shù)據(jù)時,都必須按照固定的格式進(jìn)行數(shù)據(jù)傳輸
如果想知道http協(xié)議的數(shù)據(jù)傳輸格式有哪些,可以打開瀏覽器,點擊F12打開開發(fā)者工具,點擊Network來查看
?
瀏覽器向服務(wù)器進(jìn)行請求時:
服務(wù)器按照固定的格式進(jìn)行解析
?
服務(wù)器向瀏覽器進(jìn)行響應(yīng)時:
瀏覽器按照固定的格式進(jìn)行解析
?
1.2.?特點
我們剛才初步認(rèn)識了HTTP協(xié)議,那么我們在看看HTTP協(xié)議有哪些特點:
基于TCP協(xié)議: 面向連接,安全
TCP是一種面向連接的(建立連接之前是需要經(jīng)過三次握手)、可靠的、基于字節(jié)流的傳輸層通信協(xié)議,在數(shù)據(jù)傳輸方面更安全
基于請求-響應(yīng)模型: 一次請求對應(yīng)一次響應(yīng)(先請求后響應(yīng))
請求和響應(yīng)是一一對應(yīng)關(guān)系,沒有請求,就沒有響應(yīng)
HTTP協(xié)議是無狀態(tài)協(xié)議: 對于數(shù)據(jù)沒有記憶能力。每次請求-響應(yīng)都是獨立的
無狀態(tài)指的是客戶端發(fā)送HTTP請求給服務(wù)端之后,服務(wù)端根據(jù)請求響應(yīng)數(shù)據(jù),響應(yīng)完后,不會記錄任何信息。
缺點: 多次請求間不能共享數(shù)據(jù) 優(yōu)點: 速度快
請求之間無法共享數(shù)據(jù)會引發(fā)的問題:
如:京東購物。加入購物車和去購物車結(jié)算是兩次請求 由于HTTP協(xié)議的無狀態(tài)特性,加入購物車請求響應(yīng)結(jié)束后,并未記錄加入購物車是何商品 發(fā)起去購物車結(jié)算的請求后,因為無法獲取哪些商品加入了購物車,會導(dǎo)致此次請求無法正確展示數(shù)據(jù)
具體使用的時候,我們發(fā)現(xiàn)京東是可以正常展示數(shù)據(jù)的,原因是Java早已考慮到這個問題,并提出了使用會話技術(shù)(Cookie、Session)來解決這個問題。具體如何來做,我們后面課程中會講到。
剛才提到HTTP協(xié)議是規(guī)定了請求和響應(yīng)數(shù)據(jù)的格式,那具體的格式是什么呢?
2.?HTTP-請求協(xié)議
瀏覽器和服務(wù)器是按照HTTP協(xié)議進(jìn)行數(shù)據(jù)通信的。
HTTP協(xié)議又分為:請求協(xié)議和響應(yīng)協(xié)議
請求協(xié)議:瀏覽器將數(shù)據(jù)以請求格式發(fā)送到服務(wù)器
包括:請求行、請求頭 、請求體 響應(yīng)協(xié)議:服務(wù)器將數(shù)據(jù)以響應(yīng)格式返回給瀏覽器
包括:響應(yīng)行 、響應(yīng)頭 、響應(yīng)體
在HTTP1.1版本中,瀏覽器訪問服務(wù)器的幾種方式:
請求方式請求說明GET獲取資源。 向特定的資源發(fā)出請求。例:itheima_百度搜索POST傳輸實體主體。 向指定資源提交數(shù)據(jù)進(jìn)行處理請求(例:上傳文件),數(shù)據(jù)被包含在請求體中。OPTIONS返回服務(wù)器針對特定資源所支持的HTTP請求方式。 因為并不是所有的服務(wù)器都支持規(guī)定的方法,為了安全有些服務(wù)器可能會禁止掉一些方法,例如:DELETE、PUT等。那么OPTIONS就是用來詢問服務(wù)器支持的方法。HEAD獲得報文首部。 HEAD方法類似GET方法,但是不同的是HEAD方法不要求返回數(shù)據(jù)。通常用于確認(rèn)URI的有效性及資源更新時間等。PUT傳輸文件。 PUT方法用來傳輸文件。類似FTP協(xié)議,文件內(nèi)容包含在請求報文的實體中,然后請求保存到URL指定的服務(wù)器位置。DELETE刪除文件。 請求服務(wù)器刪除Request-URI所標(biāo)識的資源TRACE追蹤路徑。 回顯服務(wù)器收到的請求,主要用于測試或診斷CONNECT要求用隧道協(xié)議連接代理。 HTTP/1.1協(xié)議中預(yù)留給能夠?qū)⑦B接改為管道方式的代理服務(wù)器
在我們實際應(yīng)用中常用的也就是 :GET、POST
GET方式的請求協(xié)議:
請求行 :HTTP請求中的第一行數(shù)據(jù)。由:請求方式、資源路徑、協(xié)議/版本組成(之間使用空格分隔)
請求方式:GET 資源路徑:/brand/findAll?name=OPPO&status=1
請求路徑:/brand/findAll 請求參數(shù):name=OPPO&status=1
請求參數(shù)是以key=value形式出現(xiàn) 多個請求參數(shù)之間使用&連接 請求路徑和請求參數(shù)之間使用?連接 協(xié)議/版本:HTTP/1.1 請求頭 :第二行開始,上圖黃色部分內(nèi)容就是請求頭。格式為key: value形式
http是個無狀態(tài)的協(xié)議,所以在請求頭設(shè)置瀏覽器的一些自身信息和想要響應(yīng)的形式。這樣服務(wù)器在收到信息后,就可以知道是誰,想干什么了 常見的HTTP請求頭有: Host: 表示請求的主機名
?
User-Agent: 瀏覽器版本。 例如:Chrome瀏覽器的標(biāo)識類似Mozilla/5.0 ...Chrome/79 ,IE瀏覽器的標(biāo)識類似Mozilla/5.0 (Windows NT ...)like Gecko
?
Accept:表示瀏覽器能接收的資源類型,如text/*,image/*或者*/*表示所有;
?
Accept-Language:表示瀏覽器偏好的語言,服務(wù)器可以據(jù)此返回不同語言的網(wǎng)頁;
?
Accept-Encoding:表示瀏覽器可以支持的壓縮類型,例如gzip, deflate等。
?
Content-Type:請求主體的數(shù)據(jù)類型
?
Content-Length:數(shù)據(jù)主體的大小(單位:字節(jié))
舉例說明:服務(wù)端可以根據(jù)請求頭中的內(nèi)容來獲取客戶端的相關(guān)信息,有了這些信息服務(wù)端就可以處理不同的業(yè)務(wù)需求。
比如:
不同瀏覽器解析HTML和CSS標(biāo)簽的結(jié)果會有不一致,所以就會導(dǎo)致相同的代碼在不同的瀏覽器會出現(xiàn)不同的效果 服務(wù)端根據(jù)客戶端請求頭中的數(shù)據(jù)獲取到客戶端的瀏覽器類型,就可以根據(jù)不同的瀏覽器設(shè)置不同的代碼來達(dá)到一致的效果(這就是我們常說的瀏覽器兼容問題)
請求體 :存儲請求參數(shù)
GET請求的請求參數(shù)在請求行中,故不需要設(shè)置請求體
POST方式的請求協(xié)議:
請求行(以上圖中紅色部分):包含請求方式、資源路徑、協(xié)議/版本
請求方式:POST 資源路徑:/brand 協(xié)議/版本:HTTP/1.1 請求頭(以上圖中黃色部分) 請求體(以上圖中綠色部分) :存儲請求參數(shù)
請求體和請求頭之間是有一個空行隔開(作用:用于標(biāo)記請求頭結(jié)束)
GET請求和POST請求的區(qū)別:
區(qū)別方式GET請求POST請求請求參數(shù)請求參數(shù)在請求行中。 例:/brand/findAll?name=OPPO&status=1請求參數(shù)在請求體中請求參數(shù)長度請求參數(shù)長度有限制(瀏覽器不同限制也不同)請求參數(shù)長度沒有限制安全性安全性低。原因:請求參數(shù)暴露在瀏覽器地址欄中。安全性相對高
?
3.?HTTP-響應(yīng)協(xié)議
3.1 格式介紹
與HTTP的請求一樣,HTTP響應(yīng)的數(shù)據(jù)也分為3部分:響應(yīng)行、響應(yīng)頭 、響應(yīng)體
響應(yīng)行(以上圖中紅色部分):響應(yīng)數(shù)據(jù)的第一行。響應(yīng)行由協(xié)議及版本、響應(yīng)狀態(tài)碼、狀態(tài)碼描述組成
協(xié)議/版本:HTTP/1.1 響應(yīng)狀態(tài)碼:200 狀態(tài)碼描述:OK 響應(yīng)頭(以上圖中黃色部分):響應(yīng)數(shù)據(jù)的第二行開始。格式為key:value形式
http是個無狀態(tài)的協(xié)議,所以可以在請求頭和響應(yīng)頭中設(shè)置一些信息和想要執(zhí)行的動作,這樣,對方在收到信息后,就可以知道你是誰,你想干什么 常見的HTTP響應(yīng)頭有: Content-Type:表示該響應(yīng)內(nèi)容的類型,例如text/html,image/jpeg ;
?
Content-Length:表示該響應(yīng)內(nèi)容的長度(字節(jié)數(shù));
?
Content-Encoding:表示該響應(yīng)壓縮算法,例如gzip ;
?
Cache-Control:指示客戶端應(yīng)如何緩存,例如max-age=300表示可以最多緩存300秒 ;
?
Set-Cookie: 告訴瀏覽器為當(dāng)前頁面所在的域設(shè)置cookie ;
響應(yīng)體(以上圖中綠色部分): 響應(yīng)數(shù)據(jù)的最后一部分。存儲響應(yīng)的數(shù)據(jù)
響應(yīng)體和響應(yīng)頭之間有一個空行隔開(作用:用于標(biāo)記響應(yīng)頭結(jié)束)
3.2 響應(yīng)狀態(tài)碼
狀態(tài)碼分類說明1xx響應(yīng)中 --- 臨時狀態(tài)碼。表示請求已經(jīng)接受,告訴客戶端應(yīng)該繼續(xù)請求或者如果已經(jīng)完成則忽略2xx成功 --- 表示請求已經(jīng)被成功接收,處理已完成3xx重定向 --- 重定向到其它地方,讓客戶端再發(fā)起一個請求以完成整個處理4xx客戶端錯誤 --- 處理發(fā)生錯誤,責(zé)任在客戶端,如:客戶端的請求一個不存在的資源,客戶端未被授權(quán),禁止訪問等5xx服務(wù)器端錯誤 --- 處理發(fā)生錯誤,責(zé)任在服務(wù)端,如:服務(wù)端拋出異常,路由出錯,HTTP版本不支持等
關(guān)于響應(yīng)狀態(tài)碼,我們先主要認(rèn)識三個狀態(tài)碼,其余的等后期用到了再去掌握:
200 ok 客戶端請求成功 404 Not Found 請求資源不存在 500 Internal Server Error 服務(wù)端發(fā)生不可預(yù)期的錯誤
?
柚子快報激活碼778899分享:網(wǎng)絡(luò)協(xié)議 網(wǎng)絡(luò) HTTP協(xié)議
相關(guān)文章
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點和立場。
轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。