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