HTTP協(xié)議介紹:
HTTP是Hyper Text Transfer Protocol(超文本傳輸協(xié)議)的縮寫
HTTP協(xié)議(HyperTextTransfer Protocol,超文本傳輸協(xié)議)是用于從WWW服務(wù)器傳輸超文本到本地瀏覽器的傳送協(xié)議儿礼。它可以使瀏覽器更加高效躏精,使網(wǎng)絡(luò)傳輸減少锄列。它不僅保證計算機(jī)正確快速地傳輸超文本文檔因篇,還確定傳輸文檔中的哪一部分蹦玫,以及哪部分內(nèi)容首先顯示(如文本先于圖形)等。?
HTTP是一個基于TCP/IP通信協(xié)議來傳遞數(shù)據(jù)
HTTP是一個應(yīng)用層協(xié)議傅是,由請求和響應(yīng)構(gòu)成咸灿,是一個標(biāo)準(zhǔn)的客戶端服務(wù)器模型吭练。HTTP是一個無狀態(tài)的協(xié)議
HTTP協(xié)議永遠(yuǎn)都是客戶端發(fā)起請求,服務(wù)器回送響應(yīng)
瀏覽器請求:
GET / HTTP/1.1
GET表示一個讀取請求析显,將從服務(wù)器獲得網(wǎng)頁數(shù)據(jù),/表示URL的路徑签赃,URL總是以/開頭谷异,/就表示首頁,最后的HTTP/1.1指示采用的HTTP協(xié)議版本是1.1锦聊。目前HTTP協(xié)議的版本就是1.1歹嘹,但是大部分服務(wù)器也支持1.0版本,主要區(qū)別在于1.1版本允許多個HTTP請求復(fù)用一個TCP連接孔庭,以加快傳輸速度尺上。
從第二行開始,每一行都類似于Xxx: abcdefg:
Host: www.sina.com
表示請求的域名是www.sina.com圆到。如果一臺服務(wù)器有多個網(wǎng)站怎抛,服務(wù)器就需要通過Host來區(qū)分瀏覽器請求的是哪個網(wǎng)站。
服務(wù)器響應(yīng):
HTTP響應(yīng)分為Header和Body兩部分(Body是可選項)芽淡,我們在Network中看到的Header最重要的幾行如下:
HTTP/1.1 200 OK
200表示一個成功的響應(yīng)马绝,后面的OK是說明。
如果返回的不是200挣菲,那么往往有其他的功能富稻,例如
·失敗的響應(yīng)有404 Not Found:網(wǎng)頁不存在
·500 Internal Server Error:服務(wù)器內(nèi)部出錯
HTTP請求流程:
1掷邦,瀏覽器向服務(wù)端發(fā)送請求
方法:GET還是POST,GET僅請求資源椭赋,POST會附帶用戶數(shù)據(jù)抚岗;
路徑:/full/url/path;
域名:由Host頭指定:Host:www.sina.com
以及其他相關(guān)的Header哪怔;
如果是POST宣蔚,那么請求還包括一個Body,包含用戶數(shù)據(jù)
2蔓涧,服務(wù)器向瀏覽器返回響應(yīng)
響應(yīng)代碼:200表示成功件已,3xx表示重定向,4xx表示客戶端發(fā)送的請求有錯誤元暴,5xx表示服務(wù)器端處理時發(fā)生了錯誤篷扩;
響應(yīng)類型:由Content-Type指定;
以及其他相關(guān)的Header茉盏;
通常服務(wù)器的HTTP響應(yīng)會攜帶內(nèi)容鉴未,也就是有一個Body,包含響應(yīng)的內(nèi)容鸠姨,網(wǎng)頁的HTML源碼就在Body中
3铜秆,如果瀏覽器再次發(fā)送其他請求,服務(wù)端再次響應(yīng)
Web采用的HTTP協(xié)議采用了非常簡單的請求-響應(yīng)模式讶迁,從而大大簡化了開發(fā)连茧。當(dāng)我們編寫一個頁面時,我們只需要在HTTP請求中把HTML發(fā)送出去巍糯,不需要考慮如何附帶圖片啸驯、視頻等,瀏覽器如果需要請求圖片和視頻祟峦,它會發(fā)送另一個HTTP請求罚斗,因此,一個HTTP請求只處理一個資源(此時就可以理解為TCP協(xié)議中的短連接宅楞,每個鏈接只獲取一個資源针姿,如需要多個就需要建立多個鏈接)