HTTP
HTTP是一個(gè)基于TCP/IP通信協(xié)議來(lái)傳遞數(shù)據(jù)(超文本傳輸協(xié)議)
好久木來(lái)更新文章了~我又回歸了铐维,此刻鼓掌。慎菲。嫁蛇。。露该。睬棚。
今天就來(lái)分享下http協(xié)議的小知識(shí),在接口測(cè)試中我們最常接觸的HTTP協(xié)議,那么今天就來(lái)暢談下HTTP的小世界O(∩_∩)O
一抑党、工作原理
工作原理
工作原理-簡(jiǎn)易版
瀏覽器(ps:一切基于http協(xié)議的發(fā)起的http請(qǐng)求的工具)向web服務(wù)器發(fā)出請(qǐng)求包警,Web服務(wù)器根據(jù)接收到的請(qǐng)求后,向客戶端發(fā)送響應(yīng)信息底靠。
web服務(wù)器:
默認(rèn)端口號(hào):80
- Apache服務(wù)器
- Nginx服務(wù)器
- IIS服務(wù)器
HTTP三點(diǎn)注意事項(xiàng):
- HTTP是無(wú)連接:無(wú)連接的含義是限制每次連接只處理一個(gè)請(qǐng)求害晦。服務(wù)器處理完客戶的請(qǐng)求,并收到客戶的應(yīng)答后暑中,即斷開(kāi)連接壹瘟。采用這種方式可以節(jié)省傳輸時(shí)間。
- HTTP是媒體獨(dú)立的:這意味著鳄逾,只要客戶端和服務(wù)器知道如何處理的數(shù)據(jù)內(nèi)容稻轨,任何類型的數(shù)據(jù)都可以通過(guò)HTTP發(fā)送⊙铣模客戶端以及服務(wù)器指定使用適合的MIME-type內(nèi)容類型澄者。
- HTTP是無(wú)狀態(tài):HTTP協(xié)議是無(wú)狀態(tài)協(xié)議笆呆。無(wú)狀態(tài)是指協(xié)議對(duì)于事務(wù)處理沒(méi)有記憶能力请琳。缺少狀態(tài)意味著如果后續(xù)處理需要前面的信息,則它必須重傳赠幕,這樣可能導(dǎo)致每次連接傳送的數(shù)據(jù)量增大俄精。
二、HTTP報(bào)文結(jié)構(gòu)
(一)請(qǐng)求報(bào)文
請(qǐng)求報(bào)文
- 請(qǐng)求行
請(qǐng)求方法 榕堰、 請(qǐng)求URL 竖慧、 協(xié)議版本
常見(jiàn)的請(qǐng)求方法:
HTTP1.0定義了三種請(qǐng)求方法: GET, POST 和 HEAD方法。
HTTP1.1新增了五種請(qǐng)求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法逆屡。
-
請(qǐng)求頭部
常見(jiàn)的頭部key/value:
Host: 請(qǐng)求的主機(jī)名
User-Agent:生成請(qǐng)求的瀏覽器類型
Accept:客戶端可識(shí)別的響應(yīng)內(nèi)容類型列表
Accept-Language: 客戶端可接受的自然語(yǔ)言
Accept-Encoding: 客戶端可接受的編碼壓縮格式
Accept-Charset: 可接受的字符集
Cookie: 存儲(chǔ)在客戶端的擴(kuò)展字段
connection:連接方式(close或keeplive)
對(duì)于請(qǐng)求端來(lái)講:
close是告訴服務(wù)端圾旨,斷開(kāi)連接,不用等待后續(xù)的求請(qǐng)了魏蔗。keeplive則是告訴服務(wù)端砍的,在完成本次請(qǐng)求的響應(yīng)后,保持連接莺治,等待本次連接后的后續(xù)請(qǐng)求廓鞠。 -
空行
通過(guò)一個(gè)空行,告訴服務(wù)器請(qǐng)求頭部到此為止 -
請(qǐng)求數(shù)據(jù)
若方法字段是GET谣旁,則此項(xiàng)為空床佳,沒(méi)有數(shù)據(jù)
若方法字段是POST,則通常來(lái)說(shuō)此處放置的就是要提交的數(shù)據(jù)
(fiddler中可以查看textview)
(二)響應(yīng)報(bào)文
響應(yīng)報(bào)文
- 狀態(tài)行
HTTP協(xié)議版本、狀態(tài)碼榄审、狀態(tài)碼描述三部分構(gòu)成
常見(jiàn)的HTTP狀態(tài)碼:
200 - 請(qǐng)求成功
301 - 資源(網(wǎng)頁(yè)等)被永久轉(zhuǎn)移到其它URL
404 - 請(qǐng)求的資源(網(wǎng)頁(yè)等)不存在
500 - 內(nèi)部服務(wù)器錯(cuò)誤
狀態(tài)碼
常見(jiàn)狀態(tài)碼說(shuō)明:
200 OK: 表示客戶端請(qǐng)求成功
400 Bad Request: 表示客戶端請(qǐng)求有語(yǔ)法錯(cuò)誤砌们,不能被服務(wù)器端解析
401 Unauthonzed: 表示請(qǐng)求未經(jīng)授權(quán),該狀態(tài)碼必須與WWW-Authenticate報(bào)文頭一起使用
404 Not Found:請(qǐng)求的資源不存在,例如輸入了錯(cuò)誤的url
500 Internal Server Error: 表示服務(wù)器發(fā)生了不可預(yù)期的錯(cuò)誤浪感,導(dǎo)致無(wú)法完成客戶端的請(qǐng)求
503 Service Unavailable:表示服務(wù)器當(dāng)前不能處理客戶端的請(qǐng)求角溃,在一段時(shí)間后服務(wù)器可能恢復(fù)正常
-
響應(yīng)頭部
常見(jiàn)的響應(yīng)頭字段:
Location: 這個(gè)頭配合302狀態(tài)碼使用,用于告訴客戶找誰(shuí)篮撑。
Server: 服務(wù)器通過(guò)這個(gè)頭告訴瀏覽器服務(wù)器的類型减细。
Content-Encoding: 服務(wù)器通過(guò)這個(gè)頭告訴瀏覽器數(shù)據(jù)的壓縮格式。
Content-Length: 服務(wù)器通過(guò)這個(gè)頭告訴瀏覽器回送數(shù)據(jù)的長(zhǎng)度
Content-Type: 服務(wù)器通過(guò)這個(gè)頭告訴瀏覽器回送數(shù)據(jù)的類型
Last-Modified: 告訴瀏覽器當(dāng)前資源的最后緩存時(shí)間
Refresh: 告訴瀏覽器隔多久刷新一次
Content-Disposition:告訴瀏覽器以下載方式打開(kāi)數(shù)據(jù)
Transfer-Encoding: 告訴瀏覽器數(shù)據(jù)的傳送格式
ETag: 緩存相關(guān)的頭 -
空行
通過(guò)一個(gè)空行赢笨,告訴請(qǐng)求端響應(yīng)內(nèi)容到此為止 -
響應(yīng)內(nèi)容
服務(wù)端返回給瀏覽器的文本信息
三未蝌、案例分析
此處以偉大的百度為案例吧~~~
此處BZ使用的是chrome的檢查工具,F(xiàn)irefox的檢查工具和第三方抓包工具都是可以的哦~
百度請(qǐng)求與響應(yīng)
關(guān)于http協(xié)議今天就小小介紹到這里咯茧妒,網(wǎng)絡(luò)上有許多的學(xué)習(xí)資料觀看↖(ω)↗~
資料鏈接: