HTTP的作用就是指導(dǎo)瀏覽器和服務(wù)器進(jìn)行溝通所刀,主要包括請(qǐng)求和相應(yīng)兩個(gè)方面遥赚。
HTTP 請(qǐng)求
瀏覽器必須按照HTTP規(guī)定的格式發(fā)送請(qǐng)求伺通,請(qǐng)求的格式包括以下四個(gè)部分:
- 動(dòng)詞 路徑 協(xié)議/版本
- Key:Value(可以出現(xiàn)多個(gè)Key-Value對(duì))
- \n (這一部分永遠(yuǎn)都是一個(gè)回車)
- 需要向?yàn)g覽器上傳的數(shù)據(jù)狂秦。(這一部分可以沒(méi)有內(nèi)容)
以下是一個(gè)請(qǐng)求的例子:
POST / HTTP/1.1
Host: www.baidu.com
User-Agent: curl/7.54.0
Accept: */*
Frank: xxx
Content-Length: 10
Content-Type: application/x-www-form-urlencoded
1234567890
可以使用Chrome開發(fā)者工具查看 HTTP 請(qǐng)求內(nèi)容关带,方法如下:
- 打開 Network
- 地址欄輸入網(wǎng)址
- 在 Network 點(diǎn)擊细溅,查看 request褥傍,點(diǎn)擊「view source」就可以看到請(qǐng)求的內(nèi)容
- 如果有請(qǐng)求的第四部分,那么在 FormData 或 Payload 里面可以看到
HTTP 響應(yīng)
服務(wù)器接收到瀏覽器的請(qǐng)求后喇聊,通常會(huì)向?yàn)g覽器發(fā)送響應(yīng)恍风,響應(yīng)的格式也包括四個(gè)部分:
- 協(xié)議/版本號(hào) 狀態(tài)碼 狀態(tài)解釋(對(duì)于常用的狀態(tài)碼,我們應(yīng)該記资睦椤)
- Key:Value(可以出現(xiàn)多個(gè)Key-Value對(duì))
- \n (這一部分永遠(yuǎn)都是一個(gè)回車)
- 需要下載的內(nèi)容
以下是一個(gè)響應(yīng)的例子:
HTTP/1.1 200 OK
Accept-Ranges: bytes
Cache-Control: private, no-cache, no-store, proxy-revalidate, no-transform
Connection: Keep-Alive
Content-Length: 2443
Content-Type: text/html
Date: Tue, 10 Oct 2017 09:14:05 GMT
Etag: "5886041d-98b"
Last-Modified: Mon, 23 Jan 2017 13:24:45 GMT
Pragma: no-cache
Server: bfe/1.0.8.18
Set-Cookie: BDORZ=27315; max-age=86400; domain=.baidu.com; path=/
<!DOCTYPE html>
<!--STATUS OK--><html> <head> 后面太長(zhǎng)朋贬,省略了……
同樣也可以使用Chrome開發(fā)者工具查看 HTTP 響應(yīng)內(nèi)容,方法如下:
- 打開 Network
- 輸入網(wǎng)址
- 選中第一個(gè)響應(yīng)
- 查看 Response Headers窜骄,點(diǎn)擊「view source」會(huì)看到響應(yīng)的前兩部分
- 查看 Response 或者 Preview锦募,你會(huì)看到響應(yīng)的第 4 部分
curl 命令的使用方法
我們可以使用curl命令,在命令行窗口中發(fā)送請(qǐng)求邻遏、接收響應(yīng)糠亩。
- 發(fā)送GET請(qǐng)求:
curl -s -v -- "https://www.baidu.com"
- 發(fā)送POST請(qǐng)求:
curl -X POST -s -v -- "https://www.baidu.com"
-d參數(shù)可以指定post的內(nèi)容 虐骑, -H參數(shù)用于添加請(qǐng)求頭,比如:
curl -X POST -d "1234567890" -s -v -H "Frank: xxx" -- "https://www.baidu.com"
這條語(yǔ)句的請(qǐng)求內(nèi)容如下:
POST / HTTP/1.1
Host: www.baidu.com
User-Agent: curl/7.54.0
Accept: */*
Frank: xxx
Content-Length: 10
Content-Type: application/x-www-form-urlencoded
1234567890