1.首先是游覽器和服務器的交互過程
Server(服務器)+Client(我們電腦上運行的游覽器軟件)+HTTP(幫助兩者進行交互溝通的一種協(xié)議)
- 游覽器負責發(fā)起請求
- 服務器在80端口(對應的就是使用HTTP協(xié)議的一個端口)接受請求
- 服務器負責返回內容(響應)
- 游覽器負責下載響應內容
2那什么是請求呢?
i.首先我們用curl來創(chuàng)造一個GET請求實例來解釋什么是請求外冀。
curl -s -v -H "Frank: xxx" -- "https://www.baidu.com"
請求的內容為:(">"大于號后面是我們請求的內容)
">" GET / HTTP/1.1
">" Host: www.baidu.com
">" User-Agent: curl/7.54.0
">" Accept: /
">" Frank: xxx
好! 那我們就來解釋下上面的這些分別是什么意思~~///(^v^)\~~
1.GET /HTTP/1.1
這個意思呢就表示我是來獲取內容的(GET)上枕;我要獲取的路徑是"/"(一般是默認根目錄)逮刨;我用的協(xié)議是HTTP(HTTP);我的HTTP版本是1.1
2.Host: www.baidu.com
表示你要訪問的站點(告訴服務器要訪問的域名)如果你亂給服務器一個不存在的域名這邊服務器就會返回給你一個404(表示你Y錯了)
3.User-Agent: curl/7.54.0
表示你使用什么工具來發(fā)出這個請求的(我們這里使用curl版本號是7.54.0來發(fā)送這個請求的)
4. Accept: /
表示我愿意接受站點返回的任意內容
Frank:xxx 這邊是我隨意上傳的一個內容可加可不加
ii 我們再來發(fā)送一個POST請求實例
curl -X POST -d "1234567890" -s -v -H "Frank: xxx" -- "https://www.baidu.com"(我這邊上傳了10個字節(jié)的數(shù)字1234567890)
請求內容為
POST / HTTP/1.1
Host: www.baidu.com
User-Agent: curl/7.54.0
Accept: /
Frank: xxx
Content-Length: 10(我上傳的長度為10字節(jié))
Content-Type: application/x-www-form-urlencoded(是以什么樣的形式響應給你)
----這邊是空行---
1234567890
請求的格式
1 動詞 路徑 協(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
---這里是空行---
4 要上傳的數(shù)據
1.請求最多包含四部分茬暇,最少包含三部分旋恼。(也就是說第四部分可以為空)
2.第三部分永遠都是一個回車(\n)
3.動詞有 GET POST PUT PATCH DELETE HEAD OPTIONS 等
4.這里的路徑包括「查詢參數(shù)」未舟,但不包括「錨點」
5.如果你沒有寫路徑祈噪,那么路徑默認為 /
6.第 2 部分中的 Content-Type 標注了第 4 部分的格式
那么首先我們先來明白這幾個單詞是什么意思:
GET:表示獲取信息
POST:表示上傳信息
PUT:表示整體更新
PATCH:表示局部更新
DELETE:表示刪除
用 Chrome 發(fā)請求:
1.打開 Network
2.地址欄輸入網址
3.在 Network 點擊,查看 request,點擊「view source」
3.點擊「view source」
3.點擊「view source」
3.點擊「view source」
4.終于點了北发?可以看到請求的前三部分了
5.如果有請求的第四部分纹因,那么在 FormData 或 Payload 里面可以看到
3.什么是響應?
請求了之后琳拨,應該都能得到一個響應瞭恰,除非斷網了,或者服務器宕機了
i.GET的響應實例
HTTP/1.1 200 OK(200"狀態(tài)碼"表示成功)
Accept-Ranges: bytes
Cache-Control: private, no-cache, no-store, proxy-revalidate, no-transform
Connection: Keep-Alive
Content-Length: 2443(響應我文本的長度是2443個字節(jié))
Content-Type: text/html(是以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(給我發(fā)出響應的這個服務器)
Set-Cookie: BDORZ=27315; max-age=86400; domain=.baidu.com; path=/
----這里是空行---
<!DOCTYPE html>
<html> <head> 后面太長狱庇,省略了……(響應的內容)
ii.POST響應實例
HTTP/1.1 302 Found(302"狀態(tài)碼"表示滾吧因為我給百度上傳了10個字節(jié)的數(shù)字但是百度不接受)
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"> 后面太長惊畏,省略了……
1.GET 請求和 POST 請求對應的響應可以一樣,也可以不一樣
2.響應的第四部分可以很長很長很長
4.響應的格式
1 協(xié)議/版本號 狀態(tài)碼 狀態(tài)解釋
2 Key1: value1
2 Key2: value2
2 Content-Length: 17931
2 Content-Type: text/html
3
4 要下載的內容
- 狀態(tài)碼要背密任,是服務器對瀏覽器說的話
- 1xx 不常用
- 2xx 表示成功
- 3xx 表示滾吧
- 4xx 表示你丫錯了
- 5xx 表示好吧颜启,我錯了
- 狀態(tài)解釋沒什么用
- 第 2 部分中的 Content-Type 標注了第 4 部分的格式
- 第 2 部分中的 Content-Type 遵循 MIME 規(guī)范
5.用 Chrome 查看響應
1.打開 Network
2.輸入網址
3.選中第一個響應
4.查看 Response Headers,點擊「view source」浪讳,點擊「view source」缰盏,點擊「view source」
5.你會看到響應的前兩部分
6.查看 Response 或者 Preview,你會看到響應的第 4 部分