摘要:緊跟在后面的是請求頭,每行用冒號分隔名稱和值按下兩次回車,收到服務(wù)端回復(fù)響應(yīng)部分第一行被稱作,它也分為三個部分,協(xié)議和版本狀態(tài)碼和狀態(tài)文本。對前端來說系列的狀態(tài)碼是非常陌生的,原因是的狀態(tài)被瀏覽器庫直接處理掉了,不會讓上層應(yīng)用知曉。
筆記說明
重學(xué)前端是程劭非(winter)【前手機(jī)淘寶前端負(fù)責(zé)人】在極客時間開的一個專欄,每天10分鐘,重構(gòu)你的前端知識體系,筆者主要整理學(xué)習(xí)過程的一些要點(diǎn)筆記以及感悟,完整的可以加入winter的專欄學(xué)習(xí)【原文有winter的語音】,如有侵權(quán)請聯(lián)系我,郵箱:[email protected]。一、URL到網(wǎng)頁呈現(xiàn)發(fā)生了什么? 1.1、過程
1、瀏覽器首先使用 HTTP 協(xié)議或者 HTTPS 協(xié)議,向服務(wù)端請求頁面
2、把請求回來的 HTML 代碼經(jīng)過解析,構(gòu)建成 DOM 樹
3、計算 DOM 樹上的 CSS 屬性
4、最后根據(jù) CSS 屬性對元素逐個進(jìn)行渲染,得到內(nèi)存中的位圖
5、一個可選的步驟是對位圖進(jìn)行合成,這會極大地增加后續(xù)繪制的速度
6、合成之后,再繪制到界面上
1.2、流程圖winter用訪問極客時間網(wǎng)站為例整理了一下流程
注意一點(diǎn):從 HTTP 請求回來,就產(chǎn)生了流式的數(shù)據(jù),后續(xù)的 DOM 樹構(gòu)建、CSS 計算、渲染、合成、繪制,都是盡可能地流式處理前一步的產(chǎn)出
二、HTTP協(xié)議 2.1、HTTP標(biāo)準(zhǔn) 2.1.1、介紹1、HTTP 標(biāo)準(zhǔn)由 IETF 組織制定,跟它相關(guān)的標(biāo)準(zhǔn)主要有兩份:
1)、HTTP1.1:https://tools.ietf.org/html/rfc2616
2)、HTTP1.1:https://tools.ietf.org/html/rfc7234
2、TCP 協(xié)議是一條雙向的通訊通道,HTTP 在 TCP 的基礎(chǔ)上,規(guī)定了 Request-Response 的模式。這個模式?jīng)Q定了通訊必定是由瀏覽器端首先發(fā)起的。
3、HTTP 是純粹的文本協(xié)議,它是規(guī)定了使用 TCP 協(xié)議來傳輸文本格式的一個應(yīng)用層協(xié)議。
2.1.2、小實(shí)驗(yàn)winter用一個純粹的 TCP 客戶端來手工實(shí)現(xiàn) HTTP,實(shí)驗(yàn)需要使用telnet客戶端
1、運(yùn)行 telnet,連接到極客時間主機(jī)
telnet time.geekbang.org 80
2、TCP 連接已經(jīng)建立,輸入下面字符作為請求(請求部分)
GET / HTTP/1.1 Host: time.geekbang.org
第一行被稱作 request line,它分為三個部分,HTTP Method(請求的方法)、請求的路徑、請求的協(xié)議和版本。
緊跟在request line后面的是請求頭,每行用冒號分隔名稱和值
3、按下兩次回車,收到服務(wù)端回復(fù)(響應(yīng)部分)
HTTP/1.1 301 Moved Permanently Date: Fri, 25 Jan 2019 13:28:12 GMT Content-Type: text/html Content-Length: 182 Connection: keep-alive Location: https://time.geekbang.org/ Strict-Transport-Security: max-age=15768000301 Moved Permanently 301 Moved Permanently
openresty
第一行被稱作 response line,它也分為三個部分,協(xié)議和版本、狀態(tài)碼和狀態(tài)文本。
緊隨在 response line 之后,是響應(yīng)頭,每行用冒號分隔的名稱和值
三、HTTP 協(xié)議格式 3.1、HTTP協(xié)議劃分 3.2、HTTP Method(方法)類型:GET、POST、HEADPUT、DELETE、CONNECT、OPTIONS、TRACE
1、瀏覽器通過地址欄訪問頁面都是 GET 方法
2、表單提交產(chǎn)生 POST 方法
3、PUT 和 DELETE 分別表示添加資源和刪除資源
4、CONNECT 現(xiàn)在多用于 HTTPS 和 WebSocket
5、OPTIONS 和 TRACE 一般用于調(diào)試,多數(shù)線上服務(wù)都不支持
3.3、 HTTP Status code(狀態(tài)碼)和 Status text(狀態(tài)文本) 3.3.1、1xx臨時回應(yīng),表示客戶端請繼續(xù)。對前端來說1xx 系列的狀態(tài)碼是非常陌生的,原因是 1xx 的狀態(tài)被瀏覽器 http 庫直接處理掉了,不會讓上層應(yīng)用知曉。3.3.2、2xx
2xx 系列的狀態(tài)最熟悉的就是 200,這通常是網(wǎng)頁請求成功的標(biāo)志3.3.3、3xx
表示請求的目標(biāo)有變化,希望客戶端進(jìn)一步處理。
301&302:永久性與臨時性跳轉(zhuǎn)。
304:跟客戶端緩存沒有更新。
3.3.4、4xx客戶端請求錯誤。
403:無權(quán)限。
404:表示請求的頁面不存在。
418:It’s a teapot. 這是一個彩蛋,來自 IETF 的一個愚人節(jié)玩笑。(超文本咖啡壺控制協(xié)議)
3.3.5、5xx服務(wù)端請求錯誤。
500:服務(wù)端錯誤。
503:服務(wù)端暫時性錯誤,可以一會再試。
3.4、HTTP Head (HTTP 頭) 3.4.1、Request Header 3.4.2、Response Header 3.5、HTTP Request BodyHTTP 請求的 body 主要用于提交表單場景。
常見的 body 格式是:
application/json
application/x-www-form-urlencoded
multipart/form-data
text/xml
1、使用 html 的 form 標(biāo)簽提交產(chǎn)生的 html 請求,默認(rèn)會產(chǎn)生 application/x-www-form-urlencoded 的數(shù)據(jù)格式
2、當(dāng)有文件上傳時,則會使用 multipart/form-data。
四、HTTPS 4.1、作用1、確定請求的目標(biāo)服務(wù)端身份
2、保證傳輸?shù)臄?shù)據(jù)不會被網(wǎng)絡(luò)中間節(jié)點(diǎn)竊聽或者篡改
4.2、標(biāo)準(zhǔn)HTTPS 的標(biāo)準(zhǔn)也是由 RFC 規(guī)定的查看詳情
HTTPS 是使用加密通道來傳輸 HTTP 的內(nèi)容。
HTTPS首先與服務(wù)端建立一條 TLS 加密通道。
TLS 構(gòu)建于 TCP 協(xié)議之上,它實(shí)際上是對傳輸?shù)膬?nèi)容做一次加密,所以從傳輸內(nèi)容上看,HTTPS 跟 HTTP 沒有任何區(qū)別。
五、HTTP2HTTP 2 是 HTTP 1.1 的升級版本查看詳情5.1、最大改進(jìn)
1、支持服務(wù)端推送:服務(wù)端推送能夠在客戶端發(fā)送第一個請求到服務(wù)端時,提前把一部分內(nèi)容推送給客戶端,放入緩存當(dāng)中,這可以避免客戶端請求順序帶來的并行度不高,從而導(dǎo)致的性能問題。
2、支持 TCP 連接復(fù)用:TCP 連接復(fù)用,則使用同一個 TCP 連接來傳輸多個 HTTP 請求,避免了 TCP 連接建立時的三次握手開銷,和初建 TCP 連接時傳輸窗口小的問題。
個人總結(jié)這一部分的知識對我們排查api問題很有幫助,理解http的一些知識,能幫助我們更好的理解前后端的通訊,接下來winter會繼續(xù)講解瀏覽器是怎樣工作的后續(xù)階段。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/114593.html
摘要:緊跟在后面的是請求頭,每行用冒號分隔名稱和值按下兩次回車,收到服務(wù)端回復(fù)響應(yīng)部分第一行被稱作,它也分為三個部分,協(xié)議和版本狀態(tài)碼和狀態(tài)文本。對前端來說系列的狀態(tài)碼是非常陌生的,原因是的狀態(tài)被瀏覽器庫直接處理掉了,不會讓上層應(yīng)用知曉。 筆記說明 重學(xué)前端是程劭非(winter)【前手機(jī)淘寶前端負(fù)責(zé)人】在極客時間開的一個專欄,每天10分鐘,重構(gòu)你的前端知識體系,筆者主要整理學(xué)習(xí)過程的一些要...
摘要:緊跟在后面的是請求頭,每行用冒號分隔名稱和值按下兩次回車,收到服務(wù)端回復(fù)響應(yīng)部分第一行被稱作,它也分為三個部分,協(xié)議和版本狀態(tài)碼和狀態(tài)文本。對前端來說系列的狀態(tài)碼是非常陌生的,原因是的狀態(tài)被瀏覽器庫直接處理掉了,不會讓上層應(yīng)用知曉。 筆記說明 重學(xué)前端是程劭非(winter)【前手機(jī)淘寶前端負(fù)責(zé)人】在極客時間開的一個專欄,每天10分鐘,重構(gòu)你的前端知識體系,筆者主要整理學(xué)習(xí)過程的一些要...
摘要:二選擇器的基本意義根據(jù)一些特征,選中元素樹上的一批元素。四偽類選擇器樹結(jié)構(gòu)關(guān)系偽類選擇器偽類表示樹的根元素。偽類表示沒有子節(jié)點(diǎn)的元素。表示焦點(diǎn)落在這個元素之上。用于選中瀏覽器的部分所指示的元素。 筆記說明 重學(xué)前端是程劭非(winter)【前手機(jī)淘寶前端負(fù)責(zé)人】在極客時間開的一個專欄,每天10分鐘,重構(gòu)你的前端知識體系,筆者主要整理學(xué)習(xí)過程的一些要點(diǎn)筆記以及感悟,完整的可以加入wint...
摘要:二選擇器的基本意義根據(jù)一些特征,選中元素樹上的一批元素。四偽類選擇器樹結(jié)構(gòu)關(guān)系偽類選擇器偽類表示樹的根元素。偽類表示沒有子節(jié)點(diǎn)的元素。表示焦點(diǎn)落在這個元素之上。用于選中瀏覽器的部分所指示的元素。 筆記說明 重學(xué)前端是程劭非(winter)【前手機(jī)淘寶前端負(fù)責(zé)人】在極客時間開的一個專欄,每天10分鐘,重構(gòu)你的前端知識體系,筆者主要整理學(xué)習(xí)過程的一些要點(diǎn)筆記以及感悟,完整的可以加入wint...
閱讀 1582·2021-11-02 14:42
閱讀 2321·2021-10-11 10:58
閱讀 669·2021-09-26 09:46
閱讀 2918·2021-09-08 09:35
閱讀 1417·2021-08-24 10:01
閱讀 1241·2019-08-30 15:54
閱讀 3613·2019-08-30 15:44
閱讀 1804·2019-08-30 10:49