關(guān)于HTTP
- HTTP協(xié)議是Hyper Text Transfer Protocol(超文本傳輸協(xié)議)的縮寫,是用于從萬維網(wǎng)(WWW:World Wide Web )服務(wù)器傳輸超文本到本地瀏覽器的傳送協(xié)議驾胆。
- HTTP是一個(gè)屬于應(yīng)用層的面向?qū)ο蟮膮f(xié)議,由于其簡(jiǎn)捷缺厉、快速的方式,適用于分布式超媒體信息系統(tǒng)涮雷。它于1990年提出各拷,經(jīng)過幾年的使用與發(fā)展,得到不斷地完善和擴(kuò)展婚惫。
- HTTP協(xié)議工作于客戶端-服務(wù)端架構(gòu)之上椿胯。瀏覽器作為HTTP客戶端通過URL向HTTP服務(wù)端即WEB服務(wù)器發(fā)送所有請(qǐng)求筷登。Web服務(wù)器根據(jù)接收到的請(qǐng)求后,向客戶端發(fā)送響應(yīng)信息哩盲。
Server+Client+ HTTP
- 瀏覽器負(fù)責(zé)發(fā)起請(qǐng)求
- 服務(wù)器在 80 端口接收請(qǐng)求
- 服務(wù)器負(fù)責(zé)返回內(nèi)容(響應(yīng))
- 瀏覽器負(fù)責(zé)下載響應(yīng)內(nèi)容
-
HTTP 的作用就是指導(dǎo)瀏覽器和服務(wù)器如何進(jìn)行溝通前方。
HTTP——請(qǐng)求消息Request
客戶端發(fā)送一個(gè)HTTP請(qǐng)求到服務(wù)器的請(qǐng)求消息包括以下格式:
請(qǐng)求行(request line)狈醉、請(qǐng)求頭部(header)、空行和請(qǐng)求數(shù)據(jù)四個(gè)部分組成惠险。
Get請(qǐng)求例子:
GET / HTTP/1.1
Host: www.baidu.com
User-Agent: curl/7.54.0
Accept: */*
Zhang: xxx
第一部分:請(qǐng)求行舔糖,用來說明請(qǐng)求類型,要訪問的資源以及所使用的HTTP版本
-
GET
說明請(qǐng)求類型為GET
,/
為要訪問的資源莺匠, 該行的最后一部分說明使用的是http1.1版本金吗。
第二部分:請(qǐng)求頭部,緊接著請(qǐng)求行(即第一行)之后的部分趣竣,用來說明服務(wù)器要使用的附加信息 - 第二行起為請(qǐng)求頭部摇庙,
HOST
將指出請(qǐng)求的目的地。User-Agent
,服務(wù)器端和客戶端腳本都能訪問它,它是瀏覽器類型檢測(cè)邏輯的重要基礎(chǔ)遥缕。該信息由你的瀏覽器來定義,并且在每個(gè)請(qǐng)求中自動(dòng)發(fā)送等等卫袒。Zhang:xxx
無意義,可有可無单匣。
第三部分:空行夕凝,請(qǐng)求頭部后面的空行是必須的 - 即使第四部分的請(qǐng)求數(shù)據(jù)為空,也必須有空行户秤。
第四部分:請(qǐng)求數(shù)據(jù)也叫主體码秉,可以添加任意的其他數(shù)據(jù)。 - 這個(gè)例子的請(qǐng)求數(shù)據(jù)為空鸡号。
POST請(qǐng)求例子:
POST / HTTP/1.1
Host: www.baidu.com
User-Agent: curl/7.54.0
Accept: */*
Zhang: xxx
Content-Length: 10
Content-Type: application/x-www-form-urlencoded
1234567890
- 第一部分:請(qǐng)求行转砖,第一行明了是post請(qǐng)求,以及http1.1版本鲸伴。
- 第二部分:請(qǐng)求頭部府蔗,第二行至第七行。
- 第三部分:空行汞窗,第八行是空行姓赤。
- 第四部分:請(qǐng)求數(shù)據(jù),第九行仲吏。
HTTP——響應(yīng)消息Response
一般情況下不铆,服務(wù)器接收并處理客戶端發(fā)過來的請(qǐng)求后會(huì)返回一個(gè)HTTP的響應(yīng)消息。
HTTP響應(yīng)也由四個(gè)部分組成蜘矢,分別是:狀態(tài)行狂男、消息報(bào)頭综看、空行和響應(yīng)正文品腹。
HTTP/1.1 302 Found
Connection: Keep-Alive
Content-Length: 17931
Content-Type: text/html
Date: Tue, 10 Oct 2017 09:19:47 GMT
Etag: "54d9749e-460b"
Server: bfe/1.0.8.18
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
后面太長(zhǎng),省略了……
第一部分:狀態(tài)行红碑,由HTTP協(xié)議版本號(hào)舞吭, 狀態(tài)碼泡垃, 狀態(tài)消息 三部分組成。
- 第一行為狀態(tài)行羡鸥,(HTTP/1.1)表明HTTP版本為1.1版本蔑穴,狀態(tài)碼為302,狀態(tài)消息為(Found)
第二部分:消息報(bào)頭惧浴,用來說明客戶端要使用的一些附加信息
- 第二行到第六行為消息報(bào)頭存和,
Date:生成響應(yīng)的日期和時(shí)間;Content-Type:指定了MIME類型的HTML(text/html),編碼類型是UTF-8
第三部分:空行衷旅,消息報(bào)頭后面的空行是必須的
第四部分:響應(yīng)正文捐腿,服務(wù)器返回給客戶端的文本信息。
- 空行后面的html部分為響應(yīng)正文柿顶。
如何使用Chrome開發(fā)者工具查看 HTTP 請(qǐng)求內(nèi)容以及響應(yīng)內(nèi)容
第一步:打開 Network
第二步:輸入網(wǎng)址
第三步:選中第一個(gè)響應(yīng)
第四步:在Headers欄點(diǎn)擊Response Headers茄袖,或點(diǎn)擊Request Headers。
第五步:點(diǎn)擊「view source」嘁锯,點(diǎn)擊「view source」宪祥,點(diǎn)擊「view source」就可以了。
查看 Response 或者 Preview家乘,你會(huì)看到響應(yīng)的第 4 部分
如何使用Curl命令
curl命令是一個(gè)利用URL規(guī)則在命令行下工作的文件傳輸工具蝗羊。它支持文件的上傳和下載,所以是綜合傳輸工具仁锯,但按傳統(tǒng)肘交,習(xí)慣稱curl為下載工具。作為一款強(qiáng)力工具扑馁,curl支持包括HTTP涯呻、HTTPS、ftp等眾多協(xié)議腻要,還支持POST复罐、cookies、認(rèn)證雄家、從指定偏移處下載部分文件效诅、用戶代理字符串、限速趟济、文件大小乱投、進(jìn)度條等特征。做網(wǎng)頁(yè)處理流程和數(shù)據(jù)檢索自動(dòng)化顷编,curl可以祝一臂之力戚炫。
參考文檔