http
- HyperText Transfer Protocol 超文本傳輸協(xié)議是一種用于分布式贡耽、協(xié)作式的應(yīng)用層協(xié)議
- 定義了客戶端和服務(wù)器之間交換報文的格式和方式枫绅,默認為80端口
- 使用tcp作為傳輸層協(xié)議鲁捏,保證了數(shù)據(jù)的可靠性
組成:
一個HTTP請求主要包括: 請求(Request)和響應(yīng)(Response)
http請求.png
-
請求
主要包含: 請求行芯砸、請求頭、請求體
-
請求行:
請求方法字段
URL字段
HTTP協(xié)議版本字段
GET/index.html HTTP/1.1
-
請求頭:
鍵值對組成
User-Agent: 對應(yīng)展示的瀏覽器的類型
-
Content-type: 對應(yīng)的請求內(nèi)容的數(shù)據(jù)類型
- application/x-www-form-urlencoded 數(shù)據(jù)以&分割 的鍵值對 鍵值對用=分割
- application/json json類型
- application/xml xml類型
- text/plain 文本類型
- multipart/form-data 表示上傳文件
-
keep-alive
http是基于TCP協(xié)議的给梅,但是通常在進行一次請求和響應(yīng)結(jié)束后會立刻中斷假丧;
在http1.0中,如果想要繼續(xù)保持連接:- 瀏覽器需要在請求頭中添加 connection: keep-alive动羽;
- 服務(wù)器需要在響應(yīng)頭中添加 connection:keey-alive包帚;
- 當(dāng)客戶端再次放請求時,就會使用同一個連接运吓,直接一方中斷連接渴邦;
在http1.1中,所有連接默認是 connection: keep-alive的拘哨;
- 不同的Web服務(wù)器會有不同的保持 keep-alive的時間谋梭;
- Node中默認是5s中;
請求體: get/post所帶的內(nèi)容
-
-
響應(yīng)
-
響應(yīng)行
由協(xié)議版本倦青、狀態(tài)碼 瓮床、狀態(tài)碼的原因短語組成
HTTP/1.1 200 OK
響應(yīng)頭
響應(yīng)體
-
請求方法
- get 向服務(wù)器獲取數(shù)據(jù)
- post 將響應(yīng)實體交給指定的資源
- head 請求一個與get請求響應(yīng)相同的響應(yīng) 沒有實體
- put 上傳文件,用于替換目標(biāo)資源的所有
- patch 用于對資源的部分修改
- delete 刪除指定的資源
- connect: 建立一個到目標(biāo)資源標(biāo)識的服務(wù)器的隧道产镐,通常用于代理服務(wù)器
- track: 回顯服務(wù)器收到的請求 主要用于測試和診斷
響應(yīng)狀態(tài)碼
- 可以根據(jù)不同的情況隘庄,給客戶端返回不同的狀態(tài)碼;
- MDN響應(yīng)碼解析地址:https://developer.mozilla.org/zh-CN/docs/web/http/status
- 200 表示請求被服務(wù)器端正常處理
- 201 post請求癣亚,創(chuàng)建新的資源
- 301 永久重定向丑掺,表示資源被分配了新的URI,并返回該URI
- 4xx 表示客戶端發(fā)生錯誤
- 400 請求報文存在語法錯誤
- 401 未授權(quán)的錯誤 必須攜帶身份信息
- 403 沒有權(quán)限訪問
- 404 服務(wù)器找不到請求資源
- 5xx 服務(wù)器錯誤
- 500 服務(wù)器遇到了不知道如何處理的情況
- 503 服務(wù)器不可用 處于維護或重載狀態(tài)
請求數(shù)據(jù)格式化
為了查看數(shù)據(jù)更加的便捷逃糟、優(yōu)雅吼鱼,可以在瀏覽器安裝一個Chrome插件:Fehelper