HTTP基本原理
概念
超文本
超文本(hypertext)是一種含有特殊標記的文本文件,比如表示網頁的HTML源代碼、表示圖片的二進制數據。
URI、URL和URN
- URI即統一資源標志符(Uniform Resource Identifier),用于標識某一互聯網資源名稱的字符串1。
- URL即統一資源定位系統(Uniform Resource Locator),用于指定信息位置的表示方法2。
- URN——已過時3。
URL和URN組成URI,URL和URN是并集,關系圖4:
URL格式
示例:https://www.baidu.com/s?wd=HTTP
標準格式:
[協議類型]://[服務器地址]:[端口號]/[資源層級UNIX文件路徑][文件名]?[查詢]#[片段ID]完整格式:
[協議類型]://[訪問資源需要的憑證信息]@[服務器地址]:[端口號]/[資源層級UNIX文件路徑][文件名]?[查詢]#[片段ID]協議類型
URL協議類型最常見的有http或https,其它諸如ftp、sftp、smb等協議。
- HTTP既超文本傳輸協議(Hyper Text Transfer Protocol),用于從網絡傳輸超文本數據到本地瀏覽器的傳送協議。
- HTTP協議是一個無狀態的協議,同一個客戶端的這次請求和上次請求是沒有對應關系。
- HTTP的端口號為80。
- HTTPS是以安全為目標的HTTP通道。
- HTTPS在HTTP的基礎下加入SSL,提供了身份驗證與加密通訊方法。
- HTTPS的端口號為443。
HTTP請求過程
簡單來說,請求過程就是客戶端向服務器進行request請求,服務器收到后進行處理然后response響應數據給瀏覽器,就完成了一次請求:
詳細過程
詳細過程能為工作中解決一些問題提供參考,面試時回答簡單過程即可。詳細過程不需要死記硬背,把它當成API類的存在即可。
當單擊某個超鏈接或者輸入訪問地址訪問時,HTTP的工作開始:
請求Request
請求行
請求行由請求方法、請求地址URL和HTTP協議版本組成,用空格分割。
- 請求地址就是URL。
- 協議版本的格式為:HTTP/主版本號.次版本號。常用的有HTTP/1.0和HTTP/1.1。
請求方法
| GET | 請求指定的頁面信息,并返回實體主體。 | 常見 |
| POST | 向指定資源提交數據進行處理請求。數據被包含在請求體中(例如提交表單或者上傳文件) | 常見 |
| PUT | 從客戶端向服務器傳送的數據取代指定的文檔的內容。 | 一般 |
| DELETE | 請求服務器刪除指定的頁面。 | 一般 |
| HEAD | 類似于GET請求,只不過返回的響應中沒有具體的內容,用于獲取報頭 | 罕見 |
| CONNECT | HTTP/1.1 協議中預留給能夠將連接改為管道方式的代理服務器。 | 罕見 |
| OPTIONS | 允許客戶端查看服務器的性能。 | 罕見 |
| TRACE | 回顯服務器收到的請求,主要用于測試或診斷。 | 罕見 |
| PATCH | 是對PUT方法的補充,用來對已知資源進行局部更新 。 | 罕見 |
請求頭
| Accept | 指定客戶端可接受哪些類型的信息。 | application/json,*/* |
| Accept-Language | 指定客戶端可接受的語言類型。 | zh-CN |
| Accept-Encoding | 指定客戶端可接受的內容編碼。 | gzip, deflate, br |
| Host | 用于指定請求資源的主機IP和端口號 | – |
| Cookie | 網站為了辨別用戶進行會話跟蹤而存儲在用戶本地的數據。 | – |
| Referer | 用來標識這個請求是從哪個頁面發過來的。如作來源統計、防盜鏈處理等 | – |
| User-Agent | 使服務器識別客戶使用的操作系統及版本、瀏覽器及版本等信息 | Mozilla/5.0… |
| Content-Type | 聯網媒體類型(Internet Media Type)或者MIME類型 | text/plain;charset=UTF-8 |
表格來源5
請求體
請求體是POST請求中的表單數據,而對于GET請求,請求體則為空。
| application/x-www-form-urlencoded | 表單數據 |
| multipart/form-data | 表單文件上傳 |
| application/json | 序列化JSON數據 |
| text/xml | XML數據 |
響應Response
可以分為三部分:響應狀態碼(Response Status Code)、響應頭(Response Headers)和響應體(Response Body)。
響應狀態碼
如200代表服務器正常響應,404代表頁面未找到,500代表服務器內部發生錯誤。
響應頭
| Date | 響應產生的時間。 | Mon, 08 Mar 2021 11:11:05 GMT |
| Last-Modified | 指定資源的最后修改時間。 | Mon, 08 Mar 2021 09:51:35 GMT |
| Content-Encoding | 指定響應內容的編碼。 | gzip |
| Server | 包含服務器的信息,比如名稱、版本號等。 | openresty |
| Content-Type | 文檔類型,指定返回的數據類型是什么 | text/html,application/x-javascript |
| Set-Cookie | 設置Cookies | – |
| Expires | 指定響應的過期時間 | – |
響應體
請求網頁時,響應體是HTML網頁。
請求接口時,響應體可能是Json數據。
Q&A
常規問題:
細節了解:
請簡述HTTP原理
HTTP就是客戶端向服務器發送請求,服務器向客戶端發送響應數據的一個過程。它包含了請求Request和響應Respouse,請求Request包含了請求頭和請求體;請求頭比較常用的屬性是User-Agent和Content-Type,請求體是POST請求中的表單數據,而對于GET請求,請求體則為空。響應Respouse也包含了響應頭和響應體,比較常見的是Content-Type和Set-Cookie。
請簡述HTTP和HTTPS,并說明它們的區別
HTTP既是超文本傳輸協議,用于從網絡傳輸超文本數據到本地瀏覽器的協議。HTTPS是以安全為目標的HTTP通道,在其基礎上加入了證書機制進行加密。區別在于,一個有證書加密一個沒有證書,在安全上具有差異;端口上1也不同,HTTP是80端口,HTTP是443端口。
思維導圖
導圖鏈接
參考
- HTTP基本原理
- 深入理解HTTP協議、HTTP協議原理分析
- 一次完整的http請求過程是怎樣的?
- HTTP請求的完全過程
URI ??
統一資源定位系統 ??
這一術語的使用已被限制更少的“URI”取代。WIKI ??
統一資源標志符 ??
HTTP 請求方法 ??
總結
- 上一篇: win10安装qt5.12保姆级教程(图
- 下一篇: 看拉扎维《模拟CMOS集成电路设计》的一