Http協(xié)議詳解

課程介紹
互聯(lián)網(wǎng)的發(fā)展非常迅速,但是萬變不離其宗。學(xué)習(xí) web 開發(fā),需要我們對(duì)
互聯(lián)的交互機(jī)制有一定的了解。為了更好的理解并掌握 Servlet,在正式學(xué)習(xí)
Servlet 之前需要對(duì) web 開發(fā)中客戶端和服務(wù)器的交互機(jī)制以及所涉及的規(guī)范
(HTTP)進(jìn)行學(xué)習(xí)。 HTTP 協(xié)議詳解

1、 web 交互的基本流程
圖片介紹:
客戶端根據(jù)用戶輸入的地址信息請(qǐng)求服務(wù)器,服務(wù)器在接收到用戶
的請(qǐng)求后進(jìn)行處理,然后將處理結(jié)果響應(yīng)給客戶端,客戶端將響應(yīng)結(jié)果
展示給用戶。 專業(yè)術(shù)語:
請(qǐng)求:客戶端根據(jù)用戶地址信息將數(shù)據(jù)發(fā)送給服務(wù)器的過程
響應(yīng):服務(wù)器將請(qǐng)求的處理結(jié)果發(fā)送給瀏覽器的過程
問題:
客戶端也就是瀏覽器的版本是有很多的,服務(wù)器的版本也是有很多
的,如何實(shí)現(xiàn)不同版本的瀏覽器和不同版本的服務(wù)器之間的數(shù)據(jù)交互
呢?
解決:
規(guī)范瀏覽器和服務(wù)器的數(shù)據(jù)交互的格式。 實(shí)現(xiàn):
HTTP 協(xié)議
2、 HTTP 的概念和介紹
概念:
超文本傳輸協(xié)議(Hyper Text Transfer Protocol)
作用:
規(guī)范了瀏覽器和服務(wù)器的數(shù)據(jù)交互
特點(diǎn):
簡(jiǎn)單快速:客戶向服務(wù)器請(qǐng)求服務(wù)時(shí),只需傳送請(qǐng)求方法和路徑。
請(qǐng)求方法常用的有 GET、HEAD、POST。每種方法規(guī)定了客戶與服
務(wù)器聯(lián)系的類型不同。由于 HTTP 協(xié)議簡(jiǎn)單,使得 HTTP 服務(wù)器的
程序規(guī)模小,因而通信速度很快
靈活:HTTP 允許傳輸任意類型的數(shù)據(jù)對(duì)象。正在傳輸?shù)念愋陀?br>Content-Type 加以標(biāo)記。
無連接:無連接的含義是限制每次連接只處理一個(gè)請(qǐng)求。服務(wù)器
處理完客戶的請(qǐng)求,并收到客戶的應(yīng)答后,即斷開連接。采用這種
方式可以節(jié)省傳輸時(shí)間。
.無狀態(tài):HTTP 協(xié)議是無狀態(tài)協(xié)議。無狀態(tài)是指協(xié)議對(duì)于事務(wù)處
理沒有記憶能力。缺少狀態(tài)意味著如果后續(xù)處理需要前面的信息,
則它必須重傳,這樣可能導(dǎo)致每次連接傳送的數(shù)據(jù)量增大。另一方
面,在服務(wù)器不需要先前信息時(shí)它的應(yīng)答就較快。
支持 B/S 及 C/S 模式。
HTTP1.1 版本后支持可持續(xù)連接
3、 HTTP 的交互流程:
HTTP 的交互流程一般分為四個(gè)步驟(一次完整的請(qǐng)求):
步驟一:
客戶端和服務(wù)器端建立連接
步驟二:
客戶端發(fā)送請(qǐng)求數(shù)據(jù)到服務(wù)器端(HTTP 協(xié)議)
步驟三:
服務(wù)器端接收到請(qǐng)求后,進(jìn)行處理,然后將
處理結(jié)果響應(yīng)客戶端(HTTP 協(xié)議)
步驟四:
關(guān)閉客戶端和服務(wù)器端的連接(HTTP1.1 后不會(huì)立即關(guān)閉)
4、 HTTP 協(xié)議之請(qǐng)求格式
請(qǐng)求格式的結(jié)構(gòu):
請(qǐng)求頭:請(qǐng)求方式、請(qǐng)求的地址和 HTTP 協(xié)議版本
請(qǐng)求行:消息報(bào)頭,一般用來說明客戶端要使用的一些附加信息
空行: 位于請(qǐng)求行和請(qǐng)求數(shù)據(jù)之間,空行是必須的。
請(qǐng)求數(shù)據(jù):非必須。 注意: 一張網(wǎng)頁的內(nèi)容是極其豐富的,瀏覽器會(huì)遵循
HTTP 請(qǐng)求的格式將有效數(shù)據(jù)發(fā)送給服務(wù)器。
示例(get 請(qǐng)求方式):
示例(post 請(qǐng)求方式):
5、 HTTP 協(xié)議之請(qǐng)求方式
根據(jù) HTTP 標(biāo)準(zhǔn),HTTP 請(qǐng)求可以使用多種請(qǐng)求方法。
HTTP1.0 定義了三種請(qǐng)求方法: GET, POST 和 HEAD 方法。
HTTP1.1 新增了五種請(qǐng)求方法:OPTIONS, PUT, DELETE, TRACE 和
CONNECT 方法。
get 和 post 請(qǐng)求方式的區(qū)別:
get 請(qǐng)求方式:
請(qǐng)求數(shù)據(jù)會(huì)以?的形式隔開拼接在請(qǐng)求頭中,不安全,沒有請(qǐng)求實(shí)
體部分。
HTTP 協(xié)議雖然沒有規(guī)定請(qǐng)求數(shù)據(jù)的大小,但是瀏覽器對(duì) URL 的長(zhǎng)
度是有限制的,所以 get 請(qǐng)求不能攜帶大量的數(shù)據(jù)。
post 請(qǐng)求方式:
請(qǐng)求數(shù)據(jù)在請(qǐng)求實(shí)體中進(jìn)行發(fā)送,在 URL 中看不到具體的請(qǐng)求數(shù)據(jù),
安全。適合數(shù)據(jù)量大的數(shù)據(jù)發(fā)送。
6、 HTTP 協(xié)議之響應(yīng)
響應(yīng)格式的結(jié)構(gòu):
響應(yīng)行(狀態(tài)行):HTTP 版本、狀態(tài)碼、狀態(tài)消息
響應(yīng)頭:消息報(bào)頭,客戶端使用的附加信息
空行:響應(yīng)頭和響應(yīng)實(shí)體之間的,必須的。
響應(yīng)實(shí)體:正文,服務(wù)器返回給瀏覽器的信息
示例:
HTTP 常見響應(yīng)狀態(tài)碼含義:
HTTP 狀態(tài)碼由三個(gè)十進(jìn)制數(shù)字組成,第一個(gè)十進(jìn)制數(shù)字定義了狀態(tài)碼
的類型,后兩個(gè)數(shù)字沒有分類的作用。HTTP 狀態(tài)碼共分為 5 種類型:
常見狀態(tài)碼:
200 OK //客戶端請(qǐng)求成功
400 Bad Request //客戶端請(qǐng)求有語法錯(cuò)誤,不能被服務(wù)器所理

401 Unauthorized //請(qǐng)求未經(jīng)授權(quán),這個(gè)狀態(tài)代碼必須和
WWW-Authenticate 報(bào)頭域一起使用
403 Forbidden //服務(wù)器收到請(qǐng)求,但是拒絕提供服務(wù)
404 Not Found //請(qǐng)求資源不存在,eg:輸入了錯(cuò)誤的 URL
500 Internal Server Error //服務(wù)器發(fā)生不可預(yù)期的錯(cuò)誤
503 Server Unavailable //服務(wù)器當(dāng)前不能處理客戶端的請(qǐng)求,一段時(shí)
間后可能恢復(fù)正常

?著作權(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)容