淺談HTTP的請(qǐng)求與響應(yīng)

什么是HTTP?

超文本傳輸協(xié)議(英文:HyperText Transfer Protocol,縮寫:HTTP)是一種用于分布式、協(xié)作式和超媒體信息系統(tǒng)的應(yīng)用層協(xié)議。HTTP是萬維網(wǎng)的數(shù)據(jù)通信的基礎(chǔ)。

簡單來說,HTTP 的作用就是指導(dǎo)瀏覽器和服務(wù)器如何進(jìn)行溝通

服務(wù)器與瀏覽器的交互
  • 瀏覽器負(fù)責(zé)發(fā)起請(qǐng)求
  • 服務(wù)器在 80 端口接收請(qǐng)求
  • 服務(wù)器負(fù)責(zé)返回內(nèi)容(響應(yīng))
  • 瀏覽器負(fù)責(zé)下載響應(yīng)內(nèi)容

HTTP請(qǐng)求

請(qǐng)求的格式

1 請(qǐng)求行:動(dòng)詞 路徑 協(xié)議/版本號(hào)  比如: GET /index.html HTTP/1.1
2 請(qǐng)求頭:
    Host: 1.2.3.4
    Accept: html, xhtml, xml
    User-Agent: Chrome / Mac
    Content-Type: application/x-www-form-urlencoded
3 回車
4 消息體:username=xxxx&password=yyyyy

請(qǐng)求的幾個(gè)要點(diǎn)

  1. 請(qǐng)求最多包含四部分,最少包含三部分。(也就是說第四部分可以為空)
  2. 第三部分永遠(yuǎn)都是一個(gè)回車(\n)
  3. 動(dòng)詞可以有 GET POST PUT PATCH DELETE HEAD OPTIONS 等
  4. 這里的路徑包括「查詢參數(shù)」,但不包括「錨點(diǎn)」
  5. 如果你沒有寫路徑,那么路徑默認(rèn)為 /
  6. 第 2 部分中的 Content-Type 標(biāo)注了第 4 部分的格式

用 Chrome 發(fā)請(qǐng)求

  1. 打開 Network
  2. 地址欄輸入網(wǎng)址
  3. 在 Network 點(diǎn)擊,查看 request,點(diǎn)擊「view source」
  4. 你會(huì)看到請(qǐng)求的前三部分
  5. 如果有請(qǐng)求的第四部分,那么在 FormData 或 Payload 里面可以看到

HTTP響應(yīng)

發(fā)出請(qǐng)求了之后,應(yīng)該都能得到一個(gè)響應(yīng),除非斷網(wǎng)了,或者服務(wù)器宕機(jī)了。

響應(yīng)的格式

1 狀態(tài)行:協(xié)議/版本號(hào) 狀態(tài)碼 狀態(tài)描述
2 響應(yīng)頭:
    Content-Type: text/html;charset=utf-8
    Server: bfe/1.0.8.18
    Date: Thu, 23 Feb 2017 13:57:26 
3 回車
4 消息體
    <!doctype html>
    <html>....
        <head>...   
        <body>...

響應(yīng)的幾個(gè)要點(diǎn)

  1. 狀態(tài)碼要背,是服務(wù)器對(duì)瀏覽器說的話
    • 1xx 不常用
    • 2xx 表示成功
    • 3xx 表示滾吧
    • 4xx 表示你丫錯(cuò)了
    • 5xx 表示好吧,我錯(cuò)了
  2. 狀態(tài)解釋沒什么用
  3. 第 2 部分中的 Content-Type 標(biāo)注了第 4 部分的格式
  4. 第 2 部分中的 Content-Type 遵循 MIME 規(guī)范

用 Chrome 查看響應(yīng)

  1. 打開 Network
  2. 輸入網(wǎng)址
  3. 選中第一個(gè)響應(yīng)
  4. 查看 Response Headers,點(diǎn)擊「view source」
  5. 你會(huì)看到響應(yīng)的前兩部分
  6. 查看 Response 或者 Preview,你會(huì)看到響應(yīng)的第 4 部分

關(guān)于cURL

cURL是一種利用URL語法在命令行方式下工作的文件傳輸工具

下面是幾個(gè)curl的請(qǐng)求與響應(yīng)

curl -L http://baidu.com

curl 發(fā)請(qǐng)求,得到響應(yīng)

curl --head https://www.baidu.com

curl 得到響應(yīng)頭

curl -D - https://www.baidu.com

curl 得到響應(yīng)頭和體

curl -s -v -H "Juff: xxx" -- "https://www.baidu.com"

請(qǐng)求的內(nèi)容為
GET / HTTP/1.1
Host: www.baidu.com
User-Agent: curl/7.54.0
Accept: */*
Juff: xxx

curl -X POST -s -v -H "Juff: xxx" -- "https://www.baidu.com"

請(qǐng)求的內(nèi)容為
POST / HTTP/1.1
Host: www.baidu.com
User-Agent: curl/7.54.0
Accept: */*
Juff: xxx

curl -X POST -d "1234567890" -s -v -H "Juff: xxx" -- "https://www.baidu.com"

請(qǐng)求的內(nèi)容為
POST / HTTP/1.1
Host: www.baidu.com
User-Agent: curl/7.54.0
Accept: */*
Juff: xxx
Content-Length: 10
Content-Type: application/x-www-form-urlencoded

1234567890
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容