概念
- HTTP (Hyper Text Transfer Protocol)
HTTP 超文本傳輸協(xié)議(HyperText Transfer Protocol)是一種用于分布式蛹疯、協(xié)作式和超媒體信息系統(tǒng)的應(yīng)用層協(xié)議。HTTP是萬維網(wǎng)的數(shù)據(jù)通信的基礎(chǔ)箍镜。
- WWW (World Wide Web)
萬維網(wǎng) 是一個由許多互相鏈接的超文本組成的系統(tǒng)耳璧,通過互聯(lián)網(wǎng)訪問
萬維網(wǎng)并不等同互聯(lián)網(wǎng)色解,萬維網(wǎng)只是互聯(lián)網(wǎng)所能提供的服務(wù)其中之一.
URI (Uniform Resource Identifier)
-
URN (Uniform Resource Name)
ISBN: 9787115275790 就是一個 URN,通過 URN 你可以確定一個「唯一的」資源,ISBN: 9787115275790 對應(yīng)的資源的是《JavaScript 高級程序設(shè)計(第三版)》這本書惊科。你去是介紹任何一個圖書館、書店亮钦,他們都知道是這本書馆截。
URL (Uniform Resource Locator)
URL 的常見組成
https://www.baidu.com/s?wd=hello&rsv_spt=1#5 就是一個 URL,通過 URL 你可以確定一個「唯一的」地址(網(wǎng)址)。
- DNS (Domain Name System)
- 輸入域名
- 輸出 IP
- HTML (HyperText Markup Language)
超文本標(biāo)記語言 是一種用于創(chuàng)建網(wǎng)頁的標(biāo)準(zhǔn)標(biāo)記語言蜡娶。
Server + Client + HTTP
交互的過程
- Client(瀏覽器) 對 Server 發(fā)起請求
- Server 在 80 端口接收請求
- Server發(fā)出響應(yīng)
- Client(瀏覽器) 接收下載響應(yīng)
HTTP
- HTTP的作用就是指導(dǎo)服務(wù)器和客戶端如何進(jìn)行溝通
- HTTP 基于 TCP
HTTP 是應(yīng)用層的協(xié)議混卵,TCP 是傳輸層的協(xié)議,客戶端向服務(wù)端發(fā)送一個HTTP請求時窖张,需要先與服務(wù)端建立 TCP 連接(三次握手)
請求
- 請求方法(動作)
GET:向指定的資源發(fā)出“顯示”請求幕随。使用 GET 方法應(yīng)該只用在讀取數(shù)據(jù),而不應(yīng)當(dāng)被用于產(chǎn)生“副作用”的操作中宿接。
POST:向指定資源提交數(shù)據(jù)赘淮,請求服務(wù)器進(jìn)行處理(例如提交表單或者上傳文件)。
HEAD:與 GET 方法一樣睦霎,都是向服務(wù)器發(fā)出指定資源的請求梢卸。只不過服務(wù)器將不傳回資源的本文部分。它的好處在于碎赢,使用這個方法可以在不必傳輸全部內(nèi)容的情況下低剔,就可以獲取其中“關(guān)于該資源的信息”(元信息或稱元數(shù)據(jù))。
PUT:向指定資源位置上傳其最新內(nèi)容肮塞。
DELETE:請求服務(wù)器刪除 Request-URI 所標(biāo)識的資源襟齿。
TRACE:回顯服務(wù)器收到的請求,主要用于測試或診斷枕赵。
OPTIONS:這個方法可使服務(wù)器傳回該資源所支持的所有 HTTP 請求方法猜欺。用'*'來代替資源名稱,向Web服務(wù)器發(fā)送 OPTIONS 請求拷窜,可以測試服務(wù)器功能是否正常運(yùn)作开皿。
CONNECT:HTTP/1.1 協(xié)議中預(yù)留給能夠?qū)⑦B接改為管道方式的代理服務(wù)器。通常用于 SSL 加密服務(wù)器的鏈接(經(jīng)由非加密的 HTTP 代理服務(wù)器)
- 請求格式
1
動詞 路徑 協(xié)議/版本
2Key1: value1
2Key2: value2
2Key3: value3
2Content-Type: application/x-www-form-urlencoded
2Host: www.sina.com
2User-Agent: curl/7.54.0
3空行
4要上傳的數(shù)據(jù)
- 注意:
- 請求格式包括四部分篮昧,至少包括三部分;
- 第 1 部分動詞為請求方法赋荆;路徑包括「查詢參數(shù)」,但不包括「錨點」懊昨;
- 第 2 部分格式為
key: value
窄潭; - 第 3 部分為空行
\n
; - 第 4 部分可以為空酵颁;
- 請求沒有寫路徑嫉你,默認(rèn)路徑為
/
; - 第 2 部分的
Content-Type
標(biāo)注了第 4 部分?jǐn)?shù)據(jù)的格式躏惋;
響應(yīng)
- 響應(yīng)格式
1
協(xié)議/版本號 狀態(tài)碼 狀態(tài)解釋
2Key1: value1
2Key2: value2
2Key3: value3
2Content-Length: 17931
2Content-Type: text/html
3空行
4要下載的內(nèi)容
*注意:
-
關(guān)于 狀態(tài)碼 幽污;
第 2 部分中的
Content-Type
標(biāo)注了第 4 部分的格式;第 2 部分中的
Content-Type
遵循 MIME 規(guī)范 簿姨;第 3 部分為空行
\n
距误;
用 Chrome 開發(fā)者工具查看 HTTP 的請求和響應(yīng)
其他開發(fā)者工具大同小異
用 $curl
命令查看 HTTP 的請求和響應(yīng)
command URL,故命令名為
curl
curl
是一種命令行工具,作用是發(fā)出網(wǎng)絡(luò)請求准潭,然后得到和提取數(shù)據(jù)攘乒,顯示"標(biāo)準(zhǔn)輸出"上面;-
$ curl xxx
查看網(wǎng)頁源代碼
$ curl www.sina.com //此網(wǎng)頁代碼較短
-
添加
-o [文件名]
下載網(wǎng)頁內(nèi)容惋鹅;
$ curl -o sina www.sina.com
curl -L
的自動跳轉(zhuǎn)
$ curl -L www.sina.com
有些網(wǎng)頁是自動跳轉(zhuǎn)的则酝,鍵入上面的命令,則會自動跳轉(zhuǎn)到www.sina.com.cn
闰集;-
$ curl -i
$ curl -I
'' 顯示頭信息
$ curl -i www.sina.com
鍵入以上命令可連同網(wǎng)頁代碼一起顯示 HTTP 響應(yīng)(Response)的頭信息;
$ curl -I www.sina.com
鍵入以上命令只顯示 HTTP 響應(yīng)(Response)的頭信息;
-
$ curl -v
顯示通信過程
$ curl -v www.sina.com
鍵入以上命令可顯示 HTTP 整個通信過程;