HTTP入門

基本概念

三個基本概念

  1. URI:統(tǒng)一資源資源標(biāo)志符(Uniform Resource Identifier)
  2. HTTP:超文本傳輸協(xié)議(HyperText Transfer Protocal)
  3. HTML:超文本標(biāo)記語言(HyperText Markup Language)

URI

URI是一個用于標(biāo)識某一互聯(lián)網(wǎng)資源名稱的字符串,也就是由某個協(xié)議方案表示的資源的定位標(biāo)識符。
URI常見的兩種形式:

  • URN(Uniform Resource Name):用字符串標(biāo)識某一互聯(lián)網(wǎng)資源。ISBN: 9787115275790 就是一個 URN,通過 URN 你可以確定一個「唯一的」資源。
  • URL(Uniform Resource Locator):我們一般使用URL作為網(wǎng)址,表示資源的地址。https://www.baidu.com/s?wd=hello&rsv_spt=1#5 就是一個 URL,通過 URL 你可以確定一個「唯一的」地址(網(wǎng)址)。
    其包括:協(xié)議+登錄信息(可選)+域名(服務(wù)器地址)+服務(wù)器端口號+路徑+查詢字符串+錨點(片段標(biāo)識符):
    URL的常見組成

DNS

DNS(Domain Name System)域名系統(tǒng),是一種負責(zé)域名解析協(xié)議,它提供域名到ip地址之間的解析服務(wù)。
使用命令行 nslookup baiducom 可以看到baidu.com的ip地址。
使用命令行ping baidu.com命令,可以查看該網(wǎng)址能否聯(lián)通。

請求與響應(yīng)

服務(wù)器與瀏覽器的交互

Server + Clilent + HTTP協(xié)議

  • 瀏覽器負責(zé)發(fā)起請求
  • 服務(wù)器在80端口接受內(nèi)容
  • 服務(wù)器返回請求的內(nèi)容

HTTP協(xié)議作用就是指導(dǎo)瀏覽器與服務(wù)器如何進行通信。

HTTP請求

請求主要由4部分組成:

POST / HTTP/1.1
Host: www.baidu.com
User-Agent: curl/7.54.0
Accept: */*
Content-Type: application/x-www-form-urlencoded
Content-Length: 10

請求的格式:

1 動詞 路徑 協(xié)議/版本
2 Key1: value1
2 Key2: value2
2 Key3: value3
2 Content-Type: application/x-www-form-urlencoded
2 Content-Length: 10
2 Host: www.baidu.com
2 User-Agent: curl/7.54.0
3
4 要上傳的數(shù)據(jù)

  1. 第一部分
  • 動詞POST是一種請求方法,常見的請求方法有:GET POST PUT PATCH DELETE HEAD OPTIONS 等。
  • 路徑/,包括查詢參數(shù),但是不包括錨點。如果沒有寫路徑則默認“/”。
  • HTTP/1.1指的發(fā)起請求遵循的協(xié)議與協(xié)議版本,目前主要使用HTTP協(xié)議。
  1. 第二部分:
    第二部分內(nèi)容主要是以key:calue的形式。
  • Host: www.baidu.com表示請求的域名
  • User-Agent: curl/7.54.0表示發(fā)起請求使用的軟件及版本號
  • Accept: */*表示接收所有
  • Content-Length: 10表示第四部分內(nèi)容的長度
  • Content-Type: application/x-www-form-urlencoded標(biāo)注第四部分內(nèi)容的格式
  1. 第三部分則是一個空行,主要作用分開第二部分與第四部分。
  2. 第四部分則是需要上傳的數(shù)據(jù)。

HTTP響應(yīng)

響應(yīng)是對請求做出的回應(yīng),其內(nèi)容格式類似請求,也主要由4部分組成:

HTTP/1.1 302 Found
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"> ……

響應(yīng)格式:

1 協(xié)議/版本號 狀態(tài)碼 狀態(tài)解釋
2 Key1: value1
2 Key2: value2
2 Content-Length: 17931
2 Content-Type: text/html
3
4 要下載的內(nèi)容

  1. 第一部分示例:HTTP/1.1 200 OK
    200是一個狀態(tài)碼,表示響應(yīng)的結(jié)果狀態(tài),后面對應(yīng)的OK是狀態(tài)解釋。狀態(tài)碼以數(shù)字1、2、3、4、5開頭,分為五種。
  2. 第二部分示例:
  • Connection: Keep-Alive
  • Content-Length: 17931響應(yīng)第四部分內(nèi)容的長度
  • Content-Type: text/html響應(yīng)的內(nèi)容格式
  • Date: Tue, 10 Oct 2017 09:19:47 GMT響應(yīng)的時間
  • Etag: "54d9749e-460b"響應(yīng)的標(biāo)簽
  • Server: bfe/1.0.8.18響應(yīng)的服務(wù)器
  1. 第三部分依然是空行,分隔第二部分與第四部分
  2. 響應(yīng)的內(nèi)容,需要下載的內(nèi)容

使用chrome查看請求與響應(yīng)

  1. 打開「Network」
  2. 地址欄輸入網(wǎng)址
  3. 打開開發(fā)者工具
  4. 在「Network」點擊,查看 request,點擊「view source」
  5. 點擊「view source」
  6. 點擊后可以看到請求的前三部分了
  7. 如果有請求的第四部分,那么在「FormData」或「Payload」里面可以看到

常見的HTTP狀態(tài)碼

  • 1xx Informational(信息性狀態(tài)碼) 接受的請求正在處理
  • 2xx Success(成功狀態(tài)碼) 請求正常處理完畢
    • 200 ok 表示響應(yīng)成功,從客戶端發(fā)來的請求在服務(wù)器被正常處理了。
    • 204 No Content 表示服務(wù)器接受的請求已成功處理,但沒有資源返回。
    • 206 Partial Conyent 表示客戶端進行了范圍請求,服務(wù)器成功執(zhí)行了這部分的GET請求。
  • 3xx Redirection(重定向狀態(tài)碼) 需要進行的附加操作以完成請求
    • 301 Moved Permanently 表示永久性重定向,請求的資源已經(jīng)被分配到新的URI。
    • 302 Found 表示臨時性重定向,請求的資源被分配了新的URI,希望用戶此次使用新的URI訪問。
    • 305 Use Proxy 表示被請求的資源必須通過指定代理才能被訪問。
  • 4xx Client Error(客戶端錯誤狀態(tài)碼) 服務(wù)器無法處理請求
    • 400 Bad Request 表示請求報文中存在語法錯誤。
    • 401 Unauthorized 表示發(fā)送的請求需要有通過HTTP認證的認證信息。
    • 403 Forbidden 表示隊請求的資源的訪問被服務(wù)器拒絕了。
    • 404 Not Found 服務(wù)器上無法找到請求的資源。
  • 5xx Server(服務(wù)器錯誤狀態(tài)碼) 服務(wù)器處理請求出錯
    • 500 Internet Server Error 表示服務(wù)器在執(zhí)行請求時發(fā)生錯誤。
    • 503 Service Unavailable 表示服務(wù)器處于超負載或正在進行停機維護。

使用curl命令發(fā)起請求

curl -s -v -H "Frank: xxx" -- "https://www.baidu.com"
使用該命令可以創(chuàng)造一個請求,請求訪問百度。
curl -X POST -s -v -H "Frank: xxx" -- "https://www.baidu.com"
新增的-X POST表示請求的方法為POST,沒有這個則默認GET。
curl -X POST -d "1234567890" -s -v -H "Frank: xxx" -- "https://www.baidu.com"
新增的 -d "1234567890"d表示date數(shù)據(jù),表示上傳了引號中的數(shù)據(jù)。

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

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