HTTP是一個(gè)客戶端終端(用戶)和服務(wù)器端(網(wǎng)站)請(qǐng)求和應(yīng)答的標(biāo)準(zhǔn)。通過使用網(wǎng)頁瀏覽器凉唐、網(wǎng)絡(luò)爬蟲或者其它的工具串纺,客戶端發(fā)起一個(gè)HTTP請(qǐng)求到服務(wù)器上指定端口(默認(rèn)端口為80)弧烤。我們稱這個(gè)客戶端為用戶代理程序(user agent)涧黄。應(yīng)答的服務(wù)器上存儲(chǔ)著一些資源漓帚,比如HTML文件和圖像母债。我們稱這個(gè)應(yīng)答服務(wù)器為源服務(wù)器(origin server)
通常,由HTTP客戶端發(fā)起一個(gè)請(qǐng)求尝抖,創(chuàng)建一個(gè)到服務(wù)器指定端口(默認(rèn)是80端口)的TCP連接毡们。HTTP服務(wù)器則在那個(gè)端口監(jiān)聽客戶端的請(qǐng)求。一旦收到請(qǐng)求昧辽,服務(wù)器會(huì)向客戶端返回一個(gè)狀態(tài)衙熔,比如"HTTP/1.1 200 OK",以及返回的內(nèi)容搅荞,如請(qǐng)求的文件红氯、錯(cuò)誤消息、或者其它信息咕痛。
HTTP請(qǐng)求
上圖就是一個(gè)簡(jiǎn)單的HTTP請(qǐng)求的內(nèi)容
HTTP請(qǐng)求的格式
1 請(qǐng)求的動(dòng)詞 路徑 協(xié)議/版本
2 key1: value1
2 key2: value2
2 key3: value3
2 ...
2 Content-Type: value
2 Host: www.baidu.com
2 User-Agent: curl/7.57.0
3 (回車)
4 要上傳的數(shù)據(jù)
開頭的1234表示請(qǐng)求的第幾部分,最少三部分
動(dòng)詞有GET(獲取) POST(上傳) PUT(整體更新) PATH(局部更新) DELETE(刪除) HEAD(獲取資源元數(shù)據(jù)) OPTIONS (獲取信息)
路徑包括查詢參數(shù),不包括錨點(diǎn),如果沒有寫路徑,默認(rèn)的路徑為 /
Content-Type 制定了第四部分的格式
User-Agent 表示發(fā)起請(qǐng)求的方式
HOST 代表域名
更多的請(qǐng)求參數(shù)可以查看weiki百科
HTTP響應(yīng)
HTTP響應(yīng)的格式
1 協(xié)議/版本號(hào) 狀態(tài)碼 狀態(tài)解釋
2 key1: value1
2 key2: value2
2 Content-Length: 2443
2 Content-Type: text/html
2 ...
3 (回車)
4 要下載的內(nèi)容
關(guān)于響應(yīng)以下的幾點(diǎn)需要解釋一下
狀態(tài)碼代表與服務(wù)器之間的狀態(tài),比較常見的狀態(tài)碼有:
- 200 表示成功
- 301 資源永久性轉(zhuǎn)移
- 302 要求客戶端執(zhí)行臨時(shí)重定向
- 403 服務(wù)器接到請(qǐng)求,拒絕執(zhí)行
- 404 找不到資源
- 500 通用的錯(cuò)誤信息
- 502 服務(wù)器不在線
其他代碼可參考HTTP狀態(tài)碼
使用chrome查看請(qǐng)求與響應(yīng)
打開 chrome ,打開開發(fā)者工具,找到netWork,如下圖
在地址欄輸入,你想訪問的地址,在回車之前先清屏,方便查看.
然后找到你請(qǐng)求的網(wǎng)址,點(diǎn)擊打開,查看preview下的數(shù)據(jù).里面有response和request信息
點(diǎn)擊view resource,就可以查看response和request了.
使用curl命令發(fā)起請(qǐng)求
curl 是一種發(fā)送請(qǐng)求的命令行工具
curl -s -v http://www.baidu.com
默認(rèn)以GET的方式發(fā)起一次http請(qǐng)求,-s
代表不顯示進(jìn)度條,-v
表示顯示一個(gè)完整的通信過程,最后邊接的就是訪問的url
curl -X POST -d "requestData" -s -v http://www.baidu.com
發(fā)起一次POST請(qǐng)求,-X
后接請(qǐng)求類型,-d
后接一個(gè)請(qǐng)求數(shù)據(jù).