目錄
一.??HTTP 協(xié)議
1. HTTP協(xié)議是什么
2.?HTTP協(xié)議的基本格式
?HTTP請(qǐng)求
首行?
????????????????GET和POST方法:
????????????????其他方法?
????????????????經(jīng)典面試題:
????????????????URL
Header(請(qǐng)求報(bào)頭)部分
空行?
?HTTP響應(yīng)
?????????狀態(tài)碼總結(jié):
二、Fiddler的用法
????????1.Fidder的安裝
?????????2.Fidder的使用
一.??HTTP 協(xié)議
1. HTTP協(xié)議是什么
- HTTP(Hypertext Transfer Protocol)是一種用于在計(jì)算機(jī)網(wǎng)絡(luò)中傳輸超文本的協(xié)議。它是 Web 上數(shù)據(jù)傳輸?shù)幕A(chǔ),支持客戶端和服務(wù)器之間的通信。HTTP 以請(qǐng)求-響應(yīng)模式工作,客戶端發(fā)送一個(gè)請(qǐng)求給服務(wù)器,服務(wù)器則返回一個(gè)響應(yīng)作為回應(yīng)。
- HTTP使用URL(Uniform Resource Locator)來(lái)標(biāo)識(shí)要請(qǐng)求的資源,常用的資源包括HTML文檔、圖像、視頻、音頻文件等。請(qǐng)求由首行、請(qǐng)求頭部、空行和正文組成。響應(yīng)由首行、響應(yīng)頭部、空行和正文組成。
- HTTP協(xié)議通常使用TCP/IP作為傳輸協(xié)議,通過(guò)端口號(hào)80進(jìn)行通信。它還可以通過(guò)HTTPS(HTTP Secure)協(xié)議進(jìn)行安全通信,使用加密的SSL/TLS進(jìn)行數(shù)據(jù)傳輸,一般使用端口號(hào) 443。
- ?總的來(lái)說(shuō),HTTP是互聯(lián)網(wǎng)上數(shù)據(jù)傳輸?shù)幕A(chǔ),它在客戶端和服務(wù)器之間傳遞請(qǐng)求和響應(yīng),使得我們能夠?yàn)g覽網(wǎng)頁(yè)、發(fā)送電子郵件、下載文件等。
2.?HTTP協(xié)議的基本格式
當(dāng)我們?cè)跒g覽器中輸入一個(gè) 搜狗搜索的 " 網(wǎng)址 " (URL) 時(shí) , 瀏覽器就給搜狗的服務(wù)器發(fā)送了一個(gè) HTTP 請(qǐng)求, 搜狗的服務(wù)器返回了一個(gè) HTTP 響應(yīng)?
?下圖就是HTTP協(xié)議的格式:
?HTTP請(qǐng)求可以分成四個(gè)部分:
1.首行
2.請(qǐng)求報(bào)頭(header)
3.空行
4.正文(body)
HTTP響應(yīng)也可以分成四個(gè)部分:
1.首行
2.響應(yīng)報(bào)頭(header)
3.空行? ? ? ?
4.正文(body)
下面就是一個(gè)HTTP請(qǐng)求:?
?HTTP請(qǐng)求
首行?
方法+URL+版本號(hào)
?GET和POST方法:
?在方法中 GET和POST是最常見(jiàn)的
GET 是最常用的 HTTP 方法. 常用于獲取服務(wù)器上的某個(gè)資源.
在瀏覽器中直接輸入 URL, 此時(shí)瀏覽器就會(huì)發(fā)送出一個(gè) GET 請(qǐng)求.
另外, HTML 中的 link, img, script 等標(biāo)簽, 也會(huì)觸發(fā) GET 請(qǐng)求.
??
?GET 請(qǐng)求的特點(diǎn)
首行的第一部分為 GET
URL 的 query string 可以為空, 也可以不為空.
header 部分有若干個(gè)鍵值對(duì)結(jié)構(gòu).
body 部分為空
?POST 方法也是一種常見(jiàn)的方法. 多用于提交用戶輸入的數(shù)據(jù)給服務(wù)器(例如登陸頁(yè)面).
通過(guò) HTML 中的 form 標(biāo)簽可以構(gòu)造 POST 請(qǐng)求, 或者使用 JavaScript 的 ajax 也可以構(gòu)造 POST 請(qǐng)求.
POST 請(qǐng)求的特點(diǎn)
首行的第一部分為 POST
URL 的 query string 一般為空 (也可以不為空)
header 部分有若干個(gè)鍵值對(duì)結(jié)構(gòu).
body 部分一般不為空. body 內(nèi)的數(shù)據(jù)格式通過(guò) header 中的 Content-Type 指定. body 的長(zhǎng)度由header 中的 Content-Length 指定.
其他方法?
PUT 與 POST 相似,只是具有冪等特性,一般用于更新
DELETE 刪除服務(wù)器指定資源
OPTIONS 返回服務(wù)器所支持的請(qǐng)求方法
HEAD 類(lèi)似于GET,只不過(guò)響應(yīng)體不返回,只返回響應(yīng)頭
TRACE 回顯服務(wù)器端收到的請(qǐng)求,測(cè)試的時(shí)候會(huì)用到這個(gè)
CONNECT 預(yù)留,暫無(wú)使用
經(jīng)典面試題:
GET 和 POST 之間的典型區(qū)別
本質(zhì)上并沒(méi)有什么區(qū)別,只是使用習(xí)慣上有區(qū)別:
1.就傳遞消息而言:
GET 也可以給服務(wù)器傳遞一些信息,GET傳遞的信息一般都放在query string.
? ?POST 傳遞消息則是通過(guò)body
2.語(yǔ)義上的差別(使用場(chǎng)景)
? GET 請(qǐng)求 一般是用于從服務(wù)器獲取數(shù)據(jù).
? POST請(qǐng)求一般是用于給服務(wù)器提交數(shù)據(jù).
3.GET 通常會(huì)被設(shè)計(jì)成冪等的,POST 不要求冪等
? 冪等:相同的輸入,得到的結(jié)果是確定的.
4.GET 可以被緩存的,POST 則一般不能被緩存.
? 把請(qǐng)求的結(jié)果保存下來(lái),下次請(qǐng)求的時(shí)候,就不必真請(qǐng)求了,直接取緩存結(jié)果.
?URL
平時(shí)我們俗稱的 "網(wǎng)址" 其實(shí)就是說(shuō)的 URL (Uniform Resource Locator 統(tǒng)一資源定位符).
互聯(lián)網(wǎng)上的每個(gè)文件都有一個(gè)唯一的URL
以下面這個(gè)網(wǎng)址為例?
https://v.bitedu.vip/personInf/student?userId=10000&classId=100
- ?https : 協(xié)議方案名. 常見(jiàn)的有 http 和 https, 也有其他的類(lèi)型. (例如訪問(wèn) mysql 時(shí)用的jdbc:mysql )
- user:pass : 登陸信息. 現(xiàn)在的網(wǎng)站進(jìn)行身份認(rèn)證一般不再通過(guò) URL 進(jìn)行了. 一般都會(huì)省略
- ?v.bitedu.vip: 服務(wù)器地址. 此處是一個(gè) "域名", 域名會(huì)通過(guò) DNS 系統(tǒng)解析成一個(gè)具體的 IP 地址.(通過(guò) ping 命令可以看到, v.bitedu.vip 的真實(shí) IP 地址為 118.24.113.28 )
- 端口號(hào): 上面的 URL 中端口號(hào)被省略了. 當(dāng)端口號(hào)省略的時(shí)候, 瀏覽器會(huì)根據(jù)協(xié)議類(lèi)型自動(dòng)決定使用哪個(gè)端口. 例如 http 協(xié)議默認(rèn)使用 80 端口, https 協(xié)議默認(rèn)使用 443 端口.
- /personInf/student : 帶層次的文件路徑.
- userId=10000&classId=100 : 查詢字符串(query string). 本質(zhì)是一個(gè)鍵值對(duì)結(jié)構(gòu). 鍵值對(duì)之間使用& 分隔. 鍵和值之間使用 = 分隔.
?Header(請(qǐng)求報(bào)頭)部分
header 的整體的格式也是 "鍵值對(duì)" 結(jié)構(gòu). 每個(gè)鍵值對(duì)占一行. 鍵和值之間使用分號(hào)分割?
HOST
大概描述了服務(wù)器所在的地址和端口
Host 這里的地址和端口,用來(lái)描述最終要訪問(wèn)的目標(biāo).
這個(gè)內(nèi)容大概率和URL中是一樣的,也有一定的情況下是不同的.
Content-Length
表示body中的數(shù)據(jù)長(zhǎng)度
Content-Type
表示請(qǐng)求的body中的數(shù)據(jù)格式
如果是GET請(qǐng)求,沒(méi)body,請(qǐng)求中沒(méi)有上述兩個(gè)字段.
如果是POST請(qǐng)求,有body,必須要有上述兩個(gè)字段.
User-Agent(簡(jiǎn)稱UA)
描述了瀏覽器和操作系統(tǒng)的版本.
現(xiàn)在主要用于區(qū)分PC端和移動(dòng)端.
Referer
當(dāng)前頁(yè)面的來(lái)源.
如果直接通過(guò)地址欄輸入地址,直接點(diǎn)擊收藏夾,都是沒(méi)有referer
Cookie
Cookie(中文名“HTTP cookie”或“網(wǎng)絡(luò)cookie”)是由網(wǎng)站服務(wù)器發(fā)送到用戶瀏覽器并存儲(chǔ)在本地計(jì)算機(jī)上的小文件,通常用于記錄用戶的活動(dòng)和偏好設(shè)置,以便在以后的訪問(wèn)中提供更加個(gè)性化的體驗(yàn)。Cookie 在網(wǎng)站開(kāi)發(fā)、廣告投放和用戶追蹤等方面,具有很重要的作用。雖然很多人對(duì) Cookie 持有負(fù)面看法,但它也是現(xiàn)代 Web 應(yīng)用的重要組成部分。
通過(guò)下面的步驟可以觀察到Cookie中的內(nèi)容:
空行?
?HTTP響應(yīng)
HTTP/1.1??版本號(hào)
200:?狀態(tài)碼
OK:?狀態(tài)碼描述
?狀態(tài)碼總結(jié):
?二、Fiddler的用法
1.Fidder的安裝
?找到Fiddler官網(wǎng)
?選擇所需版本
然后隨意填寫(xiě)進(jìn)行下載?
?2.Fidder的使用
?進(jìn)入之后進(jìn)行如圖設(shè)置
下面就是我們進(jìn)行抓包的請(qǐng)求
雙擊左側(cè)的請(qǐng)求列表中的選項(xiàng),查看到請(qǐng)求的詳細(xì)情況.
下面就是我們抓包的響應(yīng)?
??觀察抓包結(jié)果,可以看到,當(dāng)前http請(qǐng)求是一個(gè)行文本格式的數(shù)據(jù),相比于二進(jìn)制的數(shù)據(jù),用戶可以更方便的直接觀察.
會(huì)發(fā)現(xiàn)記事本出現(xiàn)亂碼.這是因?yàn)?響應(yīng)數(shù)據(jù)本來(lái)也是行文本數(shù)據(jù),但是有的服務(wù)器會(huì)對(duì)響應(yīng)進(jìn)行壓縮,變成二進(jìn)制的數(shù)據(jù)了,如果想要觀察到行文書(shū)數(shù)據(jù),點(diǎn)擊下面圖片內(nèi)容
?會(huì)看到?jīng)]有亂碼了.
藍(lán)色的說(shuō)明這是個(gè)html頁(yè)面.這是我們最關(guān)注的,其它的請(qǐng)求都是基于這個(gè)請(qǐng)求產(chǎn)生.
綠色的是js
黑色的是一些返回?cái)?shù)據(jù).文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-650405.html
文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-650405.html
到了這里,關(guān)于HTTP 協(xié)議的基本格式和 fiddler 的用法的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!