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 要上傳的資料
請求最多包含四部分,最少包含三部分(也就是說第四部分可以為空)
第三部分永遠都是一個回車(
)
常用動詞有 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:EdenSheng
Email : singlesaulwork@gmail.com