前端_网页编程 HTTP协议(进阶)
文章目錄
- 內容
- 1. HTTP協議簡介
- 1.1 什么是通信
- 1.1.1 現實生活中的通信
- 1.1.2 互聯網中的通信
- 1.2 什么是通信協議
- 1.2.1 現實生活中的通信協議
- 1.2.2 互聯網中的通信協議
- 1.3 HTTP
- 1.3.1 什么是HTTP協議
- 1.3.2 HTTP協議的交互模式
- 2. HTTP請求消息
- 2.1 什么是HTTP請求消息
- 2.2 HTTP請求消息的組成部分
- 2.2.1 請求行
- 2.2.2 請求頭部
- 2.2.3 空行
- 2.3.4 請求體
- 2.3.5 小結
- 3. HTTP響應消息
- 3.1 什么是HTTP響應消息
- 3.2 HTTP響應消息的組成部分
- 3.2.1 狀態行
- 3.2.2 響應頭部
- 3.2.3 空行
- 3.2.4 響應體
- 3.2.5 小結
- 4. HTTP請求方法
- 4.1 什么是HTTP請求方法
- 4.2 HTTP的請求方法
- 5. HTTP響應狀態碼
- 5.1 什么是HTTP響應狀態碼
- 5.2 HTTP響應狀態碼的組成及分類
- 5.3 常見HTTP響應狀態碼
- 5.3.1 成功響應狀態碼 2**
- 5.3.2 重定向相關的響應狀態碼 3**
- 5.3.3 客戶端錯誤相關的響應狀態碼 4**
- 5.3.4 服務端錯誤相關的響應狀態碼 5**
- 【完】
內容
1. HTTP協議簡介
1.1 什么是通信
通信,就是 信息的傳遞和交換。
通信三要素:
- 通信的主體;
- 通信的內容;
- 通信的方式。
1.1.1 現實生活中的通信
案例: 張三要把自己考上清華大學的好消息寫信告訴自己的好朋友李四。
其中:
- 通信的 主體 是 張三 和 李四;
- 通信的 內容 是 考上清華大學;
- 通信的 方式 是 寫信;
1.1.2 互聯網中的通信
案例: 服務器把清華大學的簡介通過響應的方式發送給客戶端瀏覽器。
其中:
- 通信的 主體 是服務器 和 客戶端瀏覽器;
- 通信的 內容 是 清華大學簡介;
- 通信的 方式 是響應;
1.2 什么是通信協議
通信協議(Communication Protocol)是指通信的雙方完成通信所必須遵守的規則和約定。
通俗的理解:通信雙方采用約定好的格式來發送和接收消息,這種事先約定好的通信格式,就叫做通信協議。
1.2.1 現實生活中的通信協議
張三與李四采用寫信的方式進行通信,在填寫信封時,寫信的雙方需要遵守固定的規則。信封的填寫規則就是一種通信協議。
1.2.2 互聯網中的通信協議
客戶端與服務器之間要實現網頁內容的傳輸,則通信的雙方必須遵守網頁內容的傳輸協議。
網頁內容又叫做超文本,因此網頁內容的傳輸協議又叫做超文本傳輸協議(HyperText Transfer Protocol) ,簡稱 HTTP 協議。
1.3 HTTP
1.3.1 什么是HTTP協議
HTTP 協議 即超文本傳送協議 (HyperText Transfer Protocol) ,它規定了客戶端與服務器之間進行網頁內容傳輸時,所必須遵守的傳輸格式。
例如:
- 客戶端 要以HTTP協議要求的格式把數據 提交 到 服務器;
- 服務器 要以HTTP協議要求的格式把內容 響應 給 客戶端。
1.3.2 HTTP協議的交互模式
HTTP 協議采用了 請求/響應 的交互模型。
2. HTTP請求消息
2.1 什么是HTTP請求消息
由于 HTTP 協議屬于客戶端瀏覽器和服務器之間的通信協議。因此,客戶端發起的請求 叫做 HTTP 請求,客戶端發送到服務器的消息,叫做 HTTP 請求消息。
注: HTTP 請求消息 又叫做 HTTP 請求報文。
2.2 HTTP請求消息的組成部分
HTTP 請求消息由4 個部分組成,分別是:
- 請求行(request line);
- 請求頭部( header );
- 空行;
- 請求體
2.2.1 請求行
請求行 由請求方式、URL 和 HTTP 協議版本 3 個部分組成,他們之間使用空格隔開。
2.2.2 請求頭部
請求頭部 用來描述客戶端的基本信息,從而把客戶端相關的信息告知服務器。比如:User-Agent 用來說明當前是什么類型的瀏覽器;Content-Type 用來描述發送到服務器的數據格式;Accept 用來描述客戶端能夠接收什么類型的返回內容;Accept-Language 用來描述客戶端期望接收哪種人類語言的文本內容。
請求頭部由多行 鍵/值對 組成,每行的鍵和值之間用英文的冒號 分隔。
請求頭部常見的請求字段:
| Host | 要請求的服務器域名 |
| Connection | 客戶端與服務器的連接方式(close 或 keepalive) |
| Content-Length | 用來描述請求體的大小 |
| Accept | 客戶端可識別的響應內容類型列表 |
| User-Agent | 產生請求的瀏覽器類型 |
| Content-Type | 客戶端告訴服務器實際發送的數據類型 |
| Accept-Encoding | 客戶端可接收的內容壓縮編碼形式 |
| Accept-Language | 用戶期望獲得的自然語言的優先順序 |
更多請求頭字段的描述,請參閱 MDN 官方文檔:https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers
2.2.3 空行
最后一個請求頭字段的后面是一個 空行,通知服務器請求頭部至此結束。
請求消息中的空行,用來分隔請求頭部與請求體。
2.3.4 請求體
請求體中存放的,是要通過 POST方式 提交到服務器的數據。
注: 只有 POST 請求才有請求體,GET 請求沒有請求體!
2.3.5 小結
3. HTTP響應消息
3.1 什么是HTTP響應消息
響應消息 就是 服務器響應給客戶端的消息內容,也叫作響應報文。
3.2 HTTP響應消息的組成部分
HTTP響應消息由狀態行、響應頭部、空行 和 響應體 4 個部分組成,如下圖所示:
3.2.1 狀態行
狀態行 由 HTTP 協議版本、狀態碼 和 狀態碼的描述文本 3 個部分組成,它們之間用空格隔開;
3.2.2 響應頭部
響應頭部用來描述服務器的基本信息。響應頭部由多行 鍵/值對 組成,每行的鍵和值之間用英文的冒號分隔。
常見的響應字段:
更多響應頭字段的描述,請參閱 MDN 官方文檔:https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers
3.2.3 空行
在最后一個響應頭部字段結束之后,會緊跟一個 空行,用來通知客戶端響應頭部至此結束。
響應消息中的空行,用來分隔 響應頭部 與 響應體。
3.2.4 響應體
響應體中存放的,是服務器響應給客戶端的資源內容。
3.2.5 小結
4. HTTP請求方法
4.1 什么是HTTP請求方法
HTTP 請求方法,屬于 HTTP 協議中的一部分,請求方法的作用是:用來表明要對服務器上的資源執行的操作。最常用的請求方法是 GET 和 POST。
4.2 HTTP的請求方法
| 1 | GET | ( 查詢 )發送請求來獲得服務器上的資源,請求體中不會包含請求數據,請求數據放在協議頭中。 |
| 2 | POST | ( 新增 )向服務器提交資源(例如提交表單或上傳文件)。數據被包含在請求體中提交給服務器。 |
| 3 | PUT | ( 修改 )向服務器提交資源,并使用提交的新資源,替換掉服務器對應的舊資源。 |
| 4 | DELETE | ( 刪除 )請求服務器刪除指定的資源。 |
| 5 | HEAD | HEAD 方法請求一個與 GET 請求的響應相同的響應,但沒有響應體。 |
| 6 | OPTIONS | 獲取http服務器支持的http請求方法,允許客戶端查看服務器的性能,比如ajax跨域時的預檢等。 |
| 7 | CONNECT | 建立一個到由目標資源標識的服務器的隧道。 |
| 8 | TRACE | 沿著到目標資源的路徑執行一個消息環回測試,主要用于測試或診斷。 |
| 9 | PATCH | 是對 PUT 方法的補充,用來對已知資源進行局部更新 。 |
5. HTTP響應狀態碼
5.1 什么是HTTP響應狀態碼
HTTP 響應狀態碼(HTTP Status Code),也屬于 HTTP 協議的一部分,用來標識響應的狀態。
響應狀態碼會隨著響應消息一起被發送至客戶端瀏覽器,瀏覽器根據服務器返回的響應狀態碼,就能知道這次 HTTP 請求的結果是成功還是失敗了。
5.2 HTTP響應狀態碼的組成及分類
HTTP 狀態碼由三個十進制數字組成,第一個十進制數字定義了狀態碼的類型,后兩個數字用來對狀態碼進行細分。
HTTP 狀態碼共分為 5 種類型:
| 1 ** | 信息,服務器收到請求,需要請求者繼續執行操作(實際開發中很少遇到 1** 類型的狀態碼) |
| 2** | 成功,操作被成功接收并處理 |
| 3** | 重定向 ,需要進一步的操作以完成請求 |
| 4** | 客戶端錯誤 ,請求包含語法錯誤或無法完成請求 |
| 5** | 服務器錯誤 ,服務器在處理請求的過程中發生了錯誤 |
更多 HTTP 響應狀態碼,請參閱 MDN 官方文檔:https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Status
5.3 常見HTTP響應狀態碼
5.3.1 成功響應狀態碼 2**
2** 范圍的狀態碼,表示服務器已成功接收到請求并進行處理。常見的 2** 類型的狀態碼如下:
| 200 | OK | 請求成功。一般用于 GET 與 POST 請求 |
| 201 | Created | 已創建。成功請求并創建了新的資源,通常用于 POST 或 PUT 請求 |
5.3.2 重定向相關的響應狀態碼 3**
3** 范圍的狀態碼,表示表示服務器要求客戶端重定向,需要客戶端進一步的操作以完成資源的請求。常見的 3** 類型的狀態碼如下:
| 301 | Moved Permanently | 永久移動。請求的資源已被永久的移動到新URI,返回信息會包括新的URI,瀏覽器會自動定向到新URI。今后任何新的請求都應使用新的URI代替 |
| 302 | Found | 臨時移動。與301類似。但資源只是臨時被移動。客戶端應繼續使用原有URI |
| 304 | Not Modified | 未修改。所請求的資源未修改,服務器返回此狀態碼時,不會返回任何資源(響應消息中不包含響應體)。客戶端通常會緩存訪問過的資源。 |
5.3.3 客戶端錯誤相關的響應狀態碼 4**
4** 范圍的狀態碼,表示客戶端的請求有非法內容,從而導致這次請求失敗。常見的 4** 類型的狀態碼如下:
| 400 | Bad Request | 1、語義有誤,當前請求無法被服務器理解。除非進行修改,否則客戶端不應該重復提交這個請求。 2、請求參數有誤。 |
| 401 | Unauthorized | 當前請求需要用戶驗證。 |
| 403 | Forbidden | 服務器已經理解請求,但是拒絕執行它。 |
| 404 | Not Found | 服務器無法根據客戶端的請求找到資源(網頁)。 |
| 408 | Request Timeout | 請求超時。服務器等待客戶端發送的請求時間過長,超時。 |
5.3.4 服務端錯誤相關的響應狀態碼 5**
5** 范圍的狀態碼,表示服務器未能正常處理客戶端的請求而出現意外錯誤。常見的 5** 類型的狀態碼如下:
| 500 | Internal Server Error | 服務器內部錯誤,無法完成請求。 |
| 501 | Not Implemented | 服務器不支持該請求方法,無法完成請求。只有 GET 和 HEAD 請求方法是要求每個服務器必須支持的,其它請求方法在不支持的服務器上會返回501 |
| 503 | Service Unavailable | 由于超載或系統維護,服務器暫時的無法處理客戶端的請求。 |
【完】
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的前端_网页编程 HTTP协议(进阶)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: vue解决字符串模板@click无效的问
- 下一篇: Arrays类解析