- 瀏覽器負(fù)責(zé)發(fā)起請(qǐng)求
- 服務(wù)器在80端口接收請(qǐng)求
- 服務(wù)器負(fù)責(zé)返回內(nèi)容(響應(yīng))
- 瀏覽器負(fù)責(zé)下載響應(yīng)內(nèi)容
HTTP的作用就是知道瀏覽器和服務(wù)器如何溝通。
請(qǐng)求實(shí)例
curl命令:
大概的意思就是將整個(gè)網(wǎng)頁信息爬下來谅阿,中間也可以加一些其他命令。
curl -s -v -H -- "https://www.baidu.com"
請(qǐng)求的內(nèi)容為
curl
GET / HTTP/1.1
Host: www.baidu.com
User-Agent: curl/7.54.0
Accept: /
curl -X POST -s -v -H "Frank: xxx" -- "https://www.baidu.com"
請(qǐng)求的內(nèi)容為
POST / HTTP/1.1
Host: www.baidu.com
User-Agent: curl/7.54.0
Accept: /
Frank: xxx
curl -X POST -d "1234567890" -s -v -H "Frank: xxx" -- "https://www.baidu.com"
請(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
請(qǐng)求格式
1 動(dòng)詞 路徑 協(xié)議/版本
2 Key1: value1
2 Key2: value2
2 Key3: value3
2 Content-Type: application/x-www-form-urlencoded
2 Host: www.baidu.com
2 User-Agent: curl/7.54.0
3
4 要上傳的數(shù)據(jù)
- 請(qǐng)求最多包含四部分泌霍,最少包含三部分。(也就是說第四部分可以為空)
- 第三部分永遠(yuǎn)都是一個(gè)回車(\n)
- 動(dòng)詞有 GET POST PUT PATCH DELETE HEAD OPTIONS 等
- 這里的路徑包括「查詢參數(shù)」控汉,但不包括「錨點(diǎn)」
- 如果你沒有寫路徑在抛,那么路徑默認(rèn)為 /
- 第 2 部分中的 Content-Type 標(biāo)注了第 4 部分的格式
用Chrome法請(qǐng)求
- 打開 Network
- 地址欄輸入網(wǎng)址
- 在 Network 點(diǎn)擊钟病,查看 request,點(diǎn)擊「view source」
- 點(diǎn)擊「view source」
- 點(diǎn)擊「view source」
- 點(diǎn)擊「view source」
- 如果有請(qǐng)求的第四部分,那么在 FormData 或 Payload 里面可以看到
響應(yīng)
請(qǐng)求了之后肠阱,應(yīng)該都能得到一個(gè)響應(yīng)票唆,除非斷網(wǎng)了,或者服務(wù)器宕機(jī)了屹徘。
響應(yīng)示例
上面三個(gè)請(qǐng)求示例走趋,前兩個(gè)請(qǐng)求對(duì)應(yīng)的響應(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>
<html> <head> 后面太長,省略了……
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"> 后面太長噪伊,省略了……
GET 請(qǐng)求和 POST 請(qǐng)求對(duì)應(yīng)的響應(yīng)可以一樣簿煌,也可以不一樣
響應(yīng)的第四部分可以很長很長很長
響應(yīng)的格式
1 協(xié)議/版本號(hào) 狀態(tài)碼 狀態(tài)解釋
2 Key1: value1
2 Key2: value2
2 Content-Length: 17931
2 Content-Type: text/html
3
4 要下載的內(nèi)容
- 狀態(tài)碼
1xx 不常用
2xx 表示成功
3xx 表示暫時(shí)不存在
4xx 表示無法訪問
5xx 表示服務(wù)器問題 - 狀態(tài)解釋沒什么用
- 第 2 部分中的 Content-Type 標(biāo)注了第 4 部分的格式
- 第 2 部分中的 Content-Type 遵循 MIME 規(guī)范
用 Chrome 查看響應(yīng)
- 打開 Network
- 輸入網(wǎng)址
- 選中第一個(gè)響應(yīng)
- 查看 Response Headers,點(diǎn)擊「view source」鉴吹,點(diǎn)擊「view source」姨伟,點(diǎn)擊「view source」
- 你會(huì)看到響應(yīng)的前兩部分
- 查看 Response 或者 Preview,你會(huì)看到響應(yīng)的第 4 部分
以上就是我對(duì)HTTP的操作與認(rèn)識(shí)拙寡。