您當前的位置:首頁 > 收藏

http協議與響應請求原理

作者:由 han 發表于 收藏時間:2021-12-31

http協議與響應請求原理

1. 客戶端與伺服器

網站應用程式主要分為兩大部分:客戶端和伺服器端。

客戶端:在瀏覽器中執行的部分,就是使用者看到並與之互動的介面程式。使用HTML、CSS、JavaScript構建。

伺服器端:在伺服器中執行的部分,負責儲存資料和處理應用邏輯。

http協議與響應請求原理

2。 URL地址

統一資源定位符,又叫URL(Uniform Resource Locator),是專為標識Internet網上資源位置而設的一種編址方式,我們平時所說的網頁地址指的即是URL。

URL地址一般由三部組成:

客戶端與伺服器之間的通訊協議

存有該資源的伺服器IP或域名

資源在伺服器上具體的存放位置

http協議與響應請求原理

(schema) 通訊協議:http超文字傳輸協議,提供了一種釋出和接收HTML頁面的方法。

host: 域名或者IP地址;

IP是Internet Protocol Address的簡寫,代表網際網路協議地址,網際網路中裝置的唯一標識。

域名:由於IP地址難於記憶,所以產生了域名的概念,所謂域名就是平時上網所使用的網址。雖然在位址列中輸入的是網址, 但是最終還是會將域名轉換為ip才能訪問到指定的網站伺服器。百度一下,你就知道 => 百度一下,你就知道

port:埠:埠是計算機與外界通訊交流的出口,用來區分伺服器電腦中提供的不同的服務。

path:路徑, 例如/abc/a/b/c,

query:查詢引數,例如 uname=lisi&age=12

fragment:錨點(雜湊Hash),用於定位頁面的某個位置

3。 分析網頁的開啟過程

http協議與響應請求原理

客戶端與伺服器之間的通訊過程,網頁中的每一個資源,都是透過 請求 – 處理 – 響應 的方式從伺服器獲取回來的。

二、HTTP協議簡介

1。 通訊

通訊,就是 資訊的傳遞和交換

通訊三要素:

通訊的 主體

通訊的 內容

通訊的 方式

網際網路中的通訊

比如:伺服器 把 圖片資源 透過 響應 的方式傳送給 客戶端瀏覽器

其中,

通訊的主體是伺服器和客戶端瀏覽器;

通訊的內容是圖片資源;

通訊的方式是響應;2。 通訊協議

通訊協議(Communication Protocol)是指通訊的雙方完成通訊所 必須遵守的規則和約定。

通俗的理解:通訊雙方 採用約定好的格式 來發送和接收訊息,這種 事先約定好的通訊格式,就叫做通訊協議。

網際網路中的通訊協議

客戶端與伺服器之間要實現網頁內容的傳輸,則通訊的雙方必須遵守 網頁內容的傳輸協議。

網頁內容又叫做 超文字,因此網頁內容的傳輸協議又叫做 超文字傳輸協議。

3。 HTTP

① 簡介

HTTP 協議 即超文字傳送協議 (HyperText Transfer Protocol) ,它規定了客戶端與伺服器之間進行網頁內容傳輸時,

所必須遵守的傳輸格式。

例如:

⚫客戶端 要以HTTP協議要求的格式把資料提交到伺服器

⚫伺服器 要以HTTP協議要求的格式把內容響應給客戶端

② HTTP協議的互動模型

HTTP 協議採用了 請求/響應 的互動模型

http協議與響應請求原理

③ 基於瀏覽器的開發者工具分析通訊過程

開啟 Chrome 瀏覽器

Ctrl+Shift+I 開啟 Chrome 的開發者工具

切換到 Network 面板

選中 Doc 頁籤

重新整理頁面,分析客戶端與伺服器的通訊過程

下圖表示網頁的每個資源的請求過程

http協議與響應請求原理

點選其中一個資源可檢視具體的請求過程

http協議與響應請求原理

每個請求都有一個返回結果

http協議與響應請求原理

三、HTTP請求

由於 HTTP 協議屬於客戶端瀏覽器和伺服器之間的通訊協議。因此,客戶端發起的請求叫做 HTTP 請求,客戶

端傳送到伺服器的訊息,叫做 HTTP 請求訊息(又稱HTTP請求報文)。

1。 HTTP請求訊息的組成部分

HTTP 請求訊息(Request Headers) 由

請求行(request line)

請求頭部( header )

空行

請求體

這 4 個部分組成。

http協議與響應請求原理

① 請求行

請求行由

請求方式

URL

HTTP 協議版本

3 個部分組成,他們之間使用空格隔開。

http協議與響應請求原理

http協議與響應請求原理

② 請求頭部

請求頭部 用來 描述客戶端的基本資訊,從而 把客戶端相關的資訊告知伺服器。

請求頭部由多行

鍵/值對

(欄位)組成,每行的鍵和值之間用英文的冒號分隔。

http協議與響應請求原理

http協議與響應請求原理

http協議與響應請求原理

③ 空行

最後一個請求頭欄位的後面是一個空行,通知伺服器 請求頭部至此結束。

請求訊息中的空行,用來 分隔請求頭部與請求體。

http協議與響應請求原理

④ 請求體

請求體中存放的,是要透過

POST 方式

提交到伺服器的資料。

http協議與響應請求原理

注意:只有 POST 請求才有請求體,GET 請求沒有請求體!

2。 客戶端如何傳送HTTP請求

①預設事件

http協議與響應請求原理

http協議與響應請求原理

②Ajax傳送請求

四、HTTP響應

1。 HTTP響應訊息

響應訊息就是

伺服器響應給客戶端的訊息內容

,也叫作響應報文。

2。 HTTP響應訊息的組成部分

HTTP響應訊息由

狀態行

響應頭部

空行

響應體

4 個部分組成,如下圖所示:

http協議與響應請求原理

① 狀態行

狀態行由

HTTP 協議版本

狀態碼

狀態碼的描述文字

3 個部分組成,他們之間使用空格隔開;

http協議與響應請求原理

http協議與響應請求原理

③ 空行

在最後一個響應頭部欄位結束之後,會緊跟一個空行,用來通知客戶端響應頭部至此結束。

響應訊息中的空行,用來 分隔響應頭部與響應體。

在這裡插入圖片描述

http協議與響應請求原理

④ 響應體

響應體中存放的,是伺服器響應給客戶端的資源內容。

http協議與響應請求原理

http協議與響應請求原理

伺服器端可以給客戶端響應多種格式的資源,比如文字、圖片、音訊、影片等等…

注意:在響應資源之前需要透過設定響應頭中的響應頭部裡的Content-Type欄位,來告訴客服端當前響應資源的格式,便於客戶端解析

3。 服務端如何響應HTTP請求

不同的框架搭建的服務端會有各自相應的api來處理,比如nodejs搭建的服務端會有nodejs自己的那一套。

五、HTTP請求方法

HTTP 請求方法,屬於 HTTP 協議中的一部分,請求方法的作用是:用來表明要對伺服器上的資源執行的操作。最常用的請求方法是 GET 和 POST。

http協議與響應請求原理

六、HTTP請求引數

請求引數儲存在請求頭中的 (POST請求)請求體 或 URL(GET請求)中。

1。 查詢字串

定義:查詢字串(URL 引數)是指在 URL 的末尾加上用於向伺服器傳送資訊的字串(變數)。

格式:將英文的 ? 放在URL 的末尾,然後再加上 引數=值 ,想加上多個引數的話,使用 & 符號進行分隔。以這個形式,可以將想要傳送給伺服器的資料新增到 URL 中。

http協議與響應請求原理

GET請求引數 就是 查詢字串

2。 URL編碼與解碼

URL 地址中,只允許出現英文相關的字母、標點符號、數字,因此,在 URL 地址中不允許出現中文字元。

如果 URL 中需要包含中文這樣的字元,則必須對中文字元進行編碼(轉義)。

URL編碼的原則:使用安全的字元(沒有特殊用途或者特殊意義的可列印字元)去表示那些不安全的字元。

URL編碼原則的通俗理解:使用英文字元去表示非英文字元。

http協議與響應請求原理

瀏覽器提供了 URL 編碼與解碼的 API,分別是:

encodeURI()

編碼的函式

decodeURI()

解碼的函式

http協議與響應請求原理

由於瀏覽器會自動對 URL 地址進行編碼操作,因此,大多數情況下,開發者不需要關心 URL 地址的編碼與解碼操作。

七、HTTP content-type

http協議與響應請求原理

在GET請求中,通常會以 查詢字串 (Content-Type: application/x-www-form-urlencoded)的形式傳遞 請求引數, 比如:name=zhangsan&age=20&sex=男

在POST請求中,通常會以 json (Content-Type: application/json)的形式傳遞 請求引數, 比如:{name: ‘zhangsan’, age: ‘20’, sex: ‘男’},引數值傳遞的時候需要透過JSON。stringify()把json物件轉換為 字串格式

注意❕:

get 請求是不能提交 json 物件資料格式的,傳統網站的表單提交也是不支援 json 物件資料格式的。

在 http 請求與響應的過程中,請求引數和響應內容無論是什麼格式,最終都會被轉換為物件字串進行傳輸

八、HTTP響應狀態程式碼

HTTP 響應狀態碼

(HTTP Status Code),也屬於 HTTP 協議的一部分,用來標識響應的狀態。

響應狀態碼會隨著響應訊息一起被髮送至客戶端瀏覽器,瀏覽器根據伺服器返回的響應狀態碼,就能知道這次HTTP 請求的結果是成功還是失敗了。

http協議與響應請求原理

HTTP 狀態碼由 三個十進位制數字 組成,

第一個十進位制數字

定義了 狀態碼的型別,後兩個數字用來對狀態碼進行細分。

根據第一個十進位制數字, HTTP 狀態碼共分為 5 種類型:

http協議與響應請求原理

1。 2** 成功相關的響應狀態碼

2**

範圍的狀態碼,表示伺服器已成功接收到請求並進行處理。常見的 2** 型別的狀態碼如下:

http協議與響應請求原理

2。 3** 重定向相關的響應狀態碼

3**

範圍的狀態碼,表示表示伺服器要求客戶端重定向,需要客戶端進一步的操作以完成資源的請求。常見的 3** 型別的狀態碼如下:

http協議與響應請求原理

3。 4** 客戶端錯誤相關的響應狀態碼

4**

範圍的狀態碼,表示客戶端的請求有非法內容,從而導致這次請求失敗。常見的 4** 型別的狀態碼如下:

http協議與響應請求原理

4。 5** 服務端錯誤相關的響應狀態碼

5**

範圍的狀態碼,表示伺服器未能正常處理客戶端的請求而出現意外錯誤。常見的 5** 型別的狀態碼如下:

http協議與響應請求原理

九、HTTP Cookie

cookie:瀏覽器在電腦硬碟中開闢的一塊空間,主要供伺服器端儲存資料。

cookie中的資料是以域名的形式進行區分的。

cookie中的資料是有過期時間的,超過時間資料會被瀏覽器自動刪除,如果不設定過期時間,那麼關閉當前頁面時cookie就會被刪除

cookie中的資料會隨著請求被自動傳送到伺服器端。

http協議與響應請求原理

session

:實際上就是一個物件,儲存在伺服器端的記憶體中,在session物件中也可以儲存多條資料,每一條資料都有一個sessionid做為唯一標識。

注意:當網站伺服器重啟的時候session會失效

http協議與響應請求原理

http協議與響應請求原理

標簽: 請求  http  客戶端  響應  伺服器