1. curl命令
curl,全稱CommandLine URL,顧名思義,curl命令是在命令列方式下利用URL的語法進行資料的傳輸或者檔案的傳輸。
程式碼示例:
$ curl -s -v -H "Jake: abc" -d "1234567" -- "https://www.baidu.com"
複製程式碼
解釋:
-v
:verbose,指定該選項後,可以跟蹤URL的連線資訊。-s
:silent,靜音模式。不顯示進度或者錯誤資訊-H
:header,自定義頭資訊傳遞給伺服器-d
: data,帶請求引數的連線。比如下面的URL,user=xiaoruan&age=22就是所帶的引數。crul可以帶請求引數。http://127.0.0.1/index.html?user=xiaoruan&age=22-X
:指定請求方式,最常見的是GET和POST。比如輸入使用者名稱密碼時就用POST。
2. HTTP 請求
用上述程式碼發起請求後,返回如下請求程式碼:
> POST / HTTP/1.1
> Host: www.baidu.com
> User-Agent: curl/7.55.0
> Accept: */*
> Jake: abc
> Content-Length: 7
> Content-Type: application/x-www-form-urlencoded
>
複製程式碼
- 請求最多包含四部分,最少包含三部分。(也就是說第四部分可以為空)
- 第一部分格式為:
動詞 路徑 協議/版本
- 動詞有 GET POST PUT PATCH DELETE HEAD OPTIONS 等
- 路徑包括「查詢引數」,但不包括「錨點」
- 如果你沒有寫路徑,那麼路徑預設為 /
- 第二部分有很多行,格式均為:
key: value
- Content-Type 標註了第 4 部分的格式
- 第三部分永遠都是一個回車
\n
- 第四部分是要上傳的資料
3. HTTP 響應
用上述程式碼發起請求後,返回如下響應程式碼:
< HTTP/1.1 302 Found
< Connection: Keep-Alive
< Content-Length: 17931
< Content-Type: text/html
< Date: Wed, 05 Dec 2018 09:07:48 GMT
< Etag: "54d97487-460b"
< Server: bfe/1.0.8.18
<
複製程式碼
-
第一部分格式為:
協議/版本號 狀態碼 狀態解釋
,狀態碼是伺服器對瀏覽器說的話- 1xx 不常用
- 2xx 表示成功
- 3xx 表示滾吧
- 4xx 表示你丫錯了
- 5xx 表示好吧,我錯了
-
第二部分有很多行,格式均為:
key: value
- Content-Type 標註了第 4 部分的格式
- Content-Type 遵循 MIME 規範
-
第三部分是回車
\n
-
第四部分是下載的資料
4. 用chrome檢視請求和響應
- 右鍵,點選
檢查
- 點選
Network
- 位址列輸入網址
- 選中第一個響應,彈出下圖右側內容
檢視響應
- 檢視第2部分Response Headers
- 點選
view source
!可以看到響應的前兩部分了。檢視 Response 或者 Preview,你會看到響應的第 4 部分
檢視請求
- 檢視第3部分Request Headers
- 點選
view source
!可以看到請求的前兩部分了。 如果請求有第四部分,那麼可以在 FormData 或 Payload 裡面可以看到