HTTP的請求與響應以及使用Chrome的檢視方式
HTTP 的作用就是指導瀏覽器和伺服器如何進行溝通。今天,我們就HTTP的請求與響應,做出簡短的介紹。
HTTP 請求
這裡使用 curl 命令來實現請求
請求示例1:
curl -s -v -H "TEST: test" -- "https://www.baidu.com" 複製程式碼
這是向伺服器傳送一個get請求,請求獲取當前伺服器的內容。其中 -H "TEST: test" 無意義可以刪除,表示可以新增一個內容。
我們可以看一下請求結果。

請求示例2:
curl -X POST -d "1234567890" -s -v -H "Test: test" -- "https://www.baidu.com" 複製程式碼
該請求可以將 '1234567890' 字串請求上傳至伺服器。 我們可以看一下請求結果。

以第一個命令為例,請求的內容為:(都只截取了其中以>開頭的請求內容)
GET / HTTP/1.1 Host: www.baidu.com User-Agent: curl/7.54.0 Accept: */* TEST: test 複製程式碼
可以看出請求的格式為:
1 動詞 路徑 協議/版本
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 要上傳的資料
請求最多包含四部分,最少包含三部分。(也就是說第四部分可以為空)
第三部分永遠都是一個回車(\n)
常用動詞有**GET POST PUT PATCH DELETE HEAD OPTIONS**等
這裡的路徑包括「查詢引數」,但不包括「錨點」
如果你沒有寫路徑,那麼路徑預設為 /
第 2 部分中的 Content-Type 標註了第 4 部分的格式
## 用Chrome開發者工具檢視 HTTP 請求內容 開啟 Network
位址列輸入網址
在 Network 點選,檢視 request,點選「view source」
可以看到請求的前三部分
如果有請求的第四部分,那麼在 FormData 或 Payload 裡面可以看到

HTTP 響應
以上面兩個請求為示例,我們擷取得到的響應 (以<開頭):
第一個:

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: Wed, 05 Dec 2018 12:10:46 GMT Etag: "58860429-98b" Last-Modified: Mon, 23 Jan 2017 13:24:57 GMT Pragma: no-cache Server: bfe/1.0.8.18 Set-Cookie: BDORZ=27315; max-age=86400; domain=.baidu.com; path=/ <!DOCTYPE html> ... 省略 複製程式碼
第二個:

HTTP/1.1 302 Found Connection: Keep-Alive Content-Length: 17931 Content-Type: text/html Date: Wed, 05 Dec 2018 12:42:04 GMT Etag: "54d9748e-460b" Server: bfe/1.0.8.18 <html> ... 省略 複製程式碼
可以看出響應的格式為:
1 協議/版本號 狀態碼 狀態解釋
2 Key1: value1
2 Key2: value2
2 Content-Length: 17931
2 Content-Type: text/html
3
4 要下載的內容
狀態碼是伺服器對瀏覽器說的話,可以查閱或記憶
狀態解釋沒什麼用
第 2 部分中的 Content-Type 標註了第 4 部分的格式
第 2 部分中的 Content-Type 遵循 MIME 規範
用Chrome開發者工具檢視 HTTP 響應內容
開啟 Network
輸入網址
選中第一個響應
檢視 Response Headers,點選「view source」
你會看到響應的前兩部分
檢視 Response 或者 Preview,你會看到響應的第 4 部分

** Written by : **
Eden Sheng
Email : [email protected]