国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

瀏覽器常見面試問題,請問你能接住幾個?

系統 瀏覽器
前端程序員,每天接觸的都是瀏覽器。作為一個合格的前端工程師,瀏覽器相關的工作原理是我們對性能優化的基石,今天就來考考自己對瀏覽器了解有多少?

前端程序員,每天接觸的都是瀏覽器。作為一個合格的前端工程師,瀏覽器相關的工作原理是我們對性能優化的基石,今天就來考考自己對瀏覽器了解有多少?

一、從輸入 URL 到頁面呈現發生了什么?

在瀏覽器中輸入一個網址,如:https://www.baidu.com 。從輸入地址到我們看到百度首頁,這一過程到底發生了什么?

1.1、構建網絡請求

瀏覽器常見面試問題,請問你能接住幾個?

1.2、查找緩存

檢查如果有緩存,則直接使用緩存,如果沒有緩存,則會向服務器發送網絡請求。

1.3、DNS解析

我們訪問網站的時候,輸入的是域名,比如上邊截圖內

域名:https://www.baidu.com

IP地址:36.152.44.95:443

真正的數據包是通過 IP 地址傳過來的,域名和 IP 是 一 一 映射關系。我們根據域名獲取到具體的 IP 這個過程就叫做 DNS 解析。

IP 地址后的數字指定的端口號,如果沒有,默認是 80 。

1.4、建立 TCP 連接

服務器要是想把數據包傳給瀏覽器之前,首先要建立連接。建立 TCP 連接,就是保證服務器與瀏覽器之間能夠進行安全連接通信,數據傳輸完畢之后再斷開連接。

TCP (Transmission Control Protocol),傳輸控制協議,是一種面向連接的,可靠的,基于字節流的傳輸層通信協議。

同一個域名下,最多能夠建立 6 個 TCP 連接,超過 6 個的話,剩余的會排隊等待。TCP 連接分為三個階段:

通過三次握手建立瀏覽器與服務器之間的連接。

進行數據傳輸,服務器向瀏覽器發送數據包。

斷開連接的階段,數據傳輸完畢之后,通過四次揮手來斷開連接。

1.5、發送 HTTP 請求

TCP 建立連接完畢后,瀏覽器和服務器可以開始通信了,即開始發送 HTTP 請求。

http 請求,前端程序員就很熟悉嘍!有請求和響應。

網絡請求流程圖:

瀏覽器常見面試問題,請問你能接住幾個?

二、頁面是如何渲染的?

第一個問題講的瀏覽內輸入 url 之后做了做了些啥,最后到發送網絡請求。服務器根據 url 提供的地址查找文件,然后加載 html、css、js、img等資源文件。接收到文件之后瀏覽器是如何渲染的呢?

瀏覽器渲染的過程為:

  1. 瀏覽器將獲取的 html 文檔解析成 DOM 樹。
  2. 處理 CSS 標記,構成層疊樣式表模型CSSOM。
  3. 將 DOM 和 CSSOM 合并,創建渲染樹(rendering tree),代表一系列將被渲染的對象。
  4. 渲染樹的每個元素包含的內容都是計算過的,它被稱為布局 layout 。瀏覽器使用流式布局的方式,只需一次繪制操作布局所有的元素。
  5. 將渲染樹的各個節點繪制到屏幕上,這一步被稱之為 painting。

圖示:

瀏覽器常見面試問題,請問你能接住幾個?

三、瀏覽器緩存是怎么回事?

3.1、強緩存

檢查強緩存的時候,不會發送 http 請求。

如何來檢查呢?通過相應的字段來進行檢查的,在 hTTP/1.0 中使用的是 Expires /,在 HTTP/1.1 使用的是 Cache-Control 。

Expires

Expires 即過期時間,存在于服務端返回的響應頭,告訴瀏覽器在過期時間之前可以直接從緩存內獲取數據,無需再次發送網絡請求。

  1. expires: Wed, 29 Dec 2021 07:19:28 GMT 
  2.  
  3. 我是在2021-12-22 12:30左右 請求的 https://www.baidu.com/ , 
  4. 返回的 expires 內容如上。 
  5. 表示資源在 2012-12-29 07:12:28 過期,在這之前不會向服務器發送請求 

這個方式你看有毛病嗎?潛藏了一個大坑,如果電腦的本地時間與服務器時間不一致時,那么服務器返回的這個過期時間可能就是不準確的,因此這種方式在 HTTP 1.1 中被拋棄了。

Cache-Control

在 HTTP1.1 中,采用了一個非常關鍵的字段:Cache-Control 。這個字段也存在于響應頭中。如:

  1. cache-control: max-age=2592000 

代表的是這個響應返回后,在 (2592/3600=720小時)直接可以直接使用緩存。

它和 Expires 本質的不同在于它并沒有采用具體的時間點,而是采用的時長來控制強緩存。如果 Expires 和 Cache-Control 同時存在的時候,Cache-Control 會優先考慮。

強緩存有沒有可能失效呢?如果資源緩存時間超時,也就是強緩存失效了,接下來該怎么辦呢?此時就會進入到第二級屏障 -- 協商緩存。

3.2、協商緩存

強緩存失效之后,瀏覽器在請求頭中攜帶相應的 緩存tag 向服務器發送請求,服務器根據這個 緩存tag 決定到底是否使用緩存,這就是協商緩存

緩存 tag 有兩種:ETag 和 Last-Modified 。

ETag 是服務器根據當前文件內容生成的唯一標識,如果內容發生更新,唯一標識也會更新。瀏覽器接收到的 ETag 會作為 if-None-Match 字段的內容,并放到請求頭中,發送給服務器之后,服務器會與服務器上的 值進行對比,如果兩者一樣,瀏覽器直接返回304,使用緩存。不一樣時發送 http 請求。

Last-Modified ,最后修改時間。瀏覽器第一次發送網絡請求后,服務器會在響應頭上加上該字段。瀏覽器再發請求時,會把該值作為 last-Modified-Since 的值,放入請求頭,然后服務器會與服務器上的最后修改時間進行對比,如果兩者一樣,瀏覽器直接返回304,使用緩存。不一樣時發送 http 請求。

兩者對比:

精準度上 ETag 更好一點。因為 ETag 能夠更準確的判斷資源是否有更新,保證拉取到的都是最新內容。

性能上 Last-Modified 剛好一點,只需要記錄一個時間點就好了。

如果兩者都存在的話,優先考慮 ETag。

3.3、緩存位置

前邊講述,瀏覽器請求地址時,服務器返回 304 表示使用瀏覽器緩存,這些資源究竟緩存到哪了呢?

緩存位置一共有四種,按照優先級由高到低排列分別為:

  • Service Worker
  • Memory Cache
  • Disk Cache
  • Push Cache

四、瀏覽器的本地存儲有哪些?

所謂本地存儲,就是把一些信息,存儲到客戶端本地,存儲的信息不會因為頁面的跳轉或關閉而消失。瀏覽器本地存儲主要分為:cookie、webStorage 和 indexDB。

4.1、cookie

cookie 主要為了辨別用戶身份。彌補 http 在狀態管理上的不足。

http 是一個無狀態協議,瀏覽器向服務器發送請求之后,服務器返回響應,下次再請求的時候,服務器已經不認識瀏覽器了,如果瀏覽器下次再發送請求時,能夠把 cookie 帶上,服務器進行解析,便能夠辨別瀏覽器的身份。

cookie 就是用來存儲狀態的,它的特點分別有:

  • 能夠兼容所有瀏覽器,它和服務器之間有一定的關聯。
  • 存儲大小限制:一般瀏覽器規定同源下最多只能存儲 4KB 大小
  • cookie 存在過期時間,過期時間可以自己設置。
  • cookie 不穩定,清除瀏覽器緩存或三方清理垃圾時容易把 cookie 移除掉。
  • 用戶可以根據句自己的需求開啟 cookie 緩存,如果開啟無痕瀏覽器或隱身模式時,將關閉 cookie。

4.2、webStorage

webStorag 可分為 localStorage 和 sessionStorage ,是本地持久化存儲,本地持久化存儲用來保存一些不需要發送給服務器的信息,用來補充 cookie 存儲方式不足。

localStorage 特點:

  • 不兼容低版本瀏覽器 IE6-8 。
  • 生命周期是永久的,除非用戶主動清除,否則一直存在。
  • 存儲的數據大小一般為 5M,各瀏覽器之間有差異。
  • 不受瀏覽器無痕模式或隱身模式影響。
  • 嚴格的本地存儲,與服務器之間沒有關系。

sessionStorage 特點:

  • 不兼容低版本瀏覽器 IE6-8 。
  • 僅在當前會話下有效,關閉當前頁面或關閉瀏覽器,就會被清除。
  • 存儲的數據大小一般為 5M,各瀏覽器之間有差異。
  • 嚴格的本地存儲,與服務器之間沒有關系。

localStorage 和 sessionStorage 有一個本質區別,localStorage 生命周期是永久化的,而 sessionStorage 只存在于當前會話。

4.3、indexedDB

indexedDB 是 html5 提供的一種本地存儲,一般保存大量用戶數據并要求數據之間有搜索需要的場景,當網絡斷開,做一些離線應用,數據格式為 json 。本質上是一個 非關系型數據庫。它的容量是沒有上限的。

特點:

  • 存儲空間較大,默認250M 。
  • 鍵值對操作,可以進行數據庫讀取和遍歷,也可以用索引進行高效的檢索。
  • 受同源策略限制,無法跨域訪問數據庫。

總結:瀏覽器本地存儲每種方式都有各自的特點,cookie 比較小適合存儲與服務器之間通信的較小狀態信息,webStorage 存儲不參與服務器通信的數據,indexedDB 存儲大型的非關系型數據庫。

五、什么是 XSS 攻擊?

XSS ( Cross Site Scripting ) 跨站腳本,為了與 CSS 區分,故意叫做 XSS 。主要是由于網站程序員對用戶輸入過濾不足,導致攻擊者利用輸入可以在頁面進行顯示或盜取用戶信息,利用身份信息進行惡意操作的一種攻擊方式。

講直白點,就是惡意攻擊者通過在輸入框處添加惡意 script 代碼,用戶瀏覽網頁的時候執行 script 代碼,從而達到惡意攻擊用戶的目的。

5.1、XSS 攻擊類型

XSS 攻擊實現有三種方式:存儲型、反射型 和 文檔寫。

存儲型

表面意思理解,就是將惡意腳本存儲起來。將腳本存儲到服務器的數據庫,然后在客戶端執行這些惡意腳本,從而達到攻擊效果。

比如,在評論區提交一段 script 代碼,如果前后端不做任何轉義工作,直接把腳本存儲到數據庫,頁面加載數據的時候,渲染時發現它是 js 代碼,就會直接執行,相當于執行了一段未知邏輯的 js 。

反射型

反射型 XSS 指的是惡意腳本作為網絡請求的一部分。

瀏覽器請求接口如:

  1. http://www.xxx.com?q=<script>alert("惡意腳本")</script> 

會將參數 q= 傳遞給服務器,服務器將內容返回給瀏覽器,瀏覽器渲染時,發現它是 js 腳本,就會直接執行。所以頁面一加載的時候,就會有一個彈框。

之所以稱為反射型,是因為它是從瀏覽器通過網絡請求經過服務器,然后又返回瀏覽器,執行解析。

文檔型

文檔型的 XSS 攻擊不會經過服務器,作為中間人的角色,在數據傳輸過程中劫持到網絡數據包,然后修改里面的 html 文檔。

常見的 wifi 劫持 或者本地惡意軟件。

XSS 攻擊危害包括:

  • 盜取用戶各類賬號,如機器登錄賬號,用戶網銀,各類管理員賬號。
  • 控制企業數據,包括讀取,篡改、添加、刪除敏感數據。
  • 盜竊具有商業價值的資料。
  • 控制受害者機器向其他網站發起攻擊。
  • 劫持別人的廣告,點擊廣告之后跳轉到自己的廣告頁

5.2、XSS防范措施

措施1:XSS 攻擊原理就是惡意執行 js 腳本,我們要防范它,只需要在用戶輸入的地方,對輸入的內容進行轉碼或過濾。

  1. 如: 
  2. <script> 
  3.   alert('惡意腳本'
  4. </script> 
  5.  
  6. //轉碼后 
  7. <script>alert('惡意腳本')</script> 

 這樣在代碼 html 中解析時,不會當做 js 腳本執行。

措施2:CSP ,瀏覽器中的內容安全策略,就是決策瀏覽器加載哪些資源。具體的有:

  • 同源策略,限制其他域下的資源加載。
  • 禁止在當前頁面向其他域下提交數據。
  • 提供上報機制,能夠及時發現 XSS 攻擊。

措施3:HttpOnly,如果 cookie 設置了 httponly,那么通過 js 腳本無法獲取到 cookie 信息。這樣能夠有效防止 XSS 攻擊,竊取用戶信息。

六、http 和 https

瀏覽器訪問 http 的網站的時候,域名前面會提示“不安全”,訪問 https//xxx.com 的時候瀏覽器提示 “安全”,這是為什么呢?

http 協議,超文本傳輸協議,被用于在服務器和瀏覽器之間傳遞信息,http協議以明文方式發送內容,不提供任何方式的數據加密,如果攻擊者直接截取瀏覽器和服務器之間傳輸報文,就可以直接讀懂其中的信息。

為了解決 http 協議的缺陷,使用 https 安全套接字層超文本傳輸協議,為了保證數據的安全性,在 http 協議的基礎上,新增了 SSL 協議,SSL依靠證書來驗證服務器的身份器,并未瀏覽器和服務器之間的通信加密。

https 并不是一個新協議,而是一個加強版的 http 。簡單講 https 協議由 SSL+http 協議構建成可進行加密傳輸、身份認證的網絡協議,要比 http 協議安全。

https 和 http 的區別:

  • https 協議需要申請安全證書,一般免費較少,需要費用,而 http 不需要。
  • https 具有 SSL 加密傳輸,更加安全,而 http 是明文傳輸,不安全。
  • https 和 http 使用的不同連接方式,用的默認端口不一樣,http 是 80,https是443。
  • http 的連接簡單,沒有狀態,而 https 是需要通過 SSL 校驗身份信息的,相對更加安全。

https 工作原理圖:

瀏覽器常見面試問題,請問你能接住幾個?

加解密過程

接著我們來談談瀏覽器和服務器進行協商加解密的過程。

首先,瀏覽器會給服務器發送一個隨機數client_random和一個加密的方法列表。

服務器接收后給瀏覽器返回另一個隨機數server_random和加密方法。

現在,兩者擁有三樣相同的憑證: client_random、server_random和加密方法。

接著用這個加密方法將兩個隨機數混合起來生成密鑰,這個密鑰就是瀏覽器和服務端通信的暗號。

 

責任編輯:姜華 來源: 今日頭條
相關推薦

2018-09-05 12:20:09

數據庫Redis面試題

2013-05-22 10:04:18

Hibernate面試問題

2023-02-10 16:36:30

機器學習評估指標

2010-09-15 09:43:24

Javascript瀏覽器兼容

2010-08-11 13:35:10

JavaScriptCSS

2024-04-11 13:38:19

大型語言模型

2013-12-03 10:11:41

LinuxLinux面試題

2018-07-25 14:27:43

Redis數據架構存儲

2025-10-30 01:20:00

Timer@Scheduled框架

2010-08-11 15:17:51

瀏覽器兼容性問題

2020-02-11 20:01:44

面試ZooKeeper連問

2020-12-28 08:25:08

Java并發HashMap

2015-09-14 13:25:08

網絡協議

2020-12-17 11:08:20

Safari手機瀏覽器蘋果

2009-06-02 15:11:11

Hibernate面試題查詢

2019-07-15 11:04:37

Spring BootTomcat開發

2021-02-10 07:38:43

Node.js后端框架

2012-03-20 11:31:58

移動瀏覽器

2012-03-19 17:25:22

2012-03-20 11:41:18

海豚瀏覽器
點贊
收藏

51CTO技術棧公眾號

国产精品久久久一本精品| 三级小说欧洲区亚洲区| 国产精品1区二区.| 国产精品 日韩| 日韩一二三区| 亚洲一区二区黄| 黄网站在线播放| 欧美日韩在线免费| 一区二区三区 日韩| 懂色中文一区二区在线播放| 欧美不卡1区2区3区| 天天综合网91| 国产精品女视频| 日韩精品社区| 久久久免费精品| av一级久久| 中文字幕在线国产精品| 欧美理论片在线播放| 欧美日韩一卡二卡| 可以免费看污视频的网站在线| 国产精品女人毛片| 成人小视频在线看| 成人福利电影精品一区二区在线观看 | 蜜臀精品久久久久久蜜臀 | 国外成人福利视频| 成人欧美magnet| 日韩免费性生活视频播放| 性史性dvd影片农村毛片| 高清欧美日韩| 亚洲免费成人av电影| 男人天堂亚洲| 欧美精选一区二区三区| 久久资源免费视频| 成人在线啊v| 欧美黑人xxxⅹ高潮交| 欧美视频二区欧美影视| 精品国产拍在线观看| 国产精品久一| 97在线观看视频国产| 精品国产123区| 91综合免费在线| 亚洲青色在线| 亚洲精品国产精品久久| 国产精品一二三四区| 777米奇影视第四色| av在线最新| 国产精品久久999| 日韩不卡在线观看日韩不卡视频| 精品香蕉一区二区三区| 在线观看的网站你懂的| 另类少妇人与禽zozz0性伦| 第四色婷婷基地| 亚洲福利网站| 555www色欧美视频| 日韩美女毛茸茸| 全球最大av网站久久| 精品视频久久久久久| 天天干天天综合| 久久手机免费观看| 99re成人在线| 完全免费av在线播放| 国内揄拍国内精品久久| 日韩精彩视频| 久久久精品国产免费观看同学| xxx亚洲日本| 色国产综合视频| 亚洲男人av| 日本精品久久久久久久| 亚洲欧美成人综合| 少妇人妻互换不带套| 欧美亚洲日本国产| 国产成人午夜性a一级毛片| 国产精品精品国产| 国产在线视频一区二区三区| 亚洲四虎av| 欧美成人精精品一区二区频| 色婷婷综合久久久久久| 水蜜桃一区二区三区| 亚洲精品第一国产综合野| av中文在线资源| 青青草原成人在线视频| 久久精品国产99| h色视频在线观看| 亚洲性夜色噜噜噜7777| 91综合在线| 4444亚洲人成无码网在线观看| 一区二区三区四区乱视频| 校园春色亚洲| 成人精品一区二区三区电影免费| xx免费视频| 日韩精品免费一线在线观看| 成人vr资源| 欧美大片在线播放| 欧美精选一区二区| 久操国产精品| 免费观看美女裸体网站| 91精品国产乱| 色综合天天爱| 熟女人妇 成熟妇女系列视频| 日韩一区二区免费在线电影| 国精一区二区| 男人亚洲天堂网| 亚洲激情 国产| 雨宫琴音一区二区在线| 久草.com| 欧美成人激情视频| 国产一区二区调教| 日本激情视频在线观看| 国产精品扒开腿做爽爽爽男男| 国产成人av一区二区| 成人在线直播| 91精品啪在线观看麻豆免费| 国产欧美视频一区二区| 欧美最新精品| 视频一区二区三| 欧美色欧美亚洲另类二区| 欧美人与拘性视交免费看| 一本—道久久a久久精品蜜桃| 91福利视频久久久久| 日韩精品电影| 最新理论片影院| 91禁外国网站| 亚洲国产精品成人久久综合一区| 欧美日韩尤物久久| 成年丰满熟妇午夜免费视频 | av激情成人网| 欧美日韩午夜爽爽| 日韩av有码在线| 九九在线精品视频| 欧美a级在线观看| 亚洲欧美日韩精品综合在线观看| 欧美精品久久天天躁| 日韩亚洲国产精品| 黄色在线论坛| 日日噜噜噜噜夜夜爽亚洲精品| 日韩欧美www| 麻豆91在线看| 天堂√8在线中文| 欧美这里只有精品| 日韩中文字幕久久| 久久免费电影网| 国产精品视频3p| 全部孕妇毛片丰满孕妇孕| 国产精品旅馆在线| 天天综合日日夜夜精品| 亚洲精品成人| 成人午夜电影在线观看| 精品国产免费一区二区三区| 日韩欧美一级二级三级久久久| 麻豆精品蜜桃视频网站| 成人黄色免费网站| 精品日韩一区二区三区免费视频| 丝袜美腿成人在线| 超级碰碰久久| 国产成人手机视频| 国产精品第二页| 欧洲精品一区二区三区在线观看| 久久蜜桃精品| 国产成人毛片| h色视频在线观看| 欧美精品免费观看二区| 亚洲视频在线观看视频| 久久久久久久久久久电影| 国产a久久精品一区二区三区| 超碰在线影院| 日本a在线天堂| 日韩美女主播视频| 91精品欧美综合在线观看最新| 国产99久久久国产精品| 伊人成综合网yiren22| 91se在线| 免费在线激情视频| 成人在线视频电影| 中文字幕亚洲一区在线观看 | 三级在线视频观看| 亚洲综合中文字幕68页| 亚洲激情在线视频| 中文字幕一区在线观看视频| 伊人久久大香线| 漫画在线观看av| 成人观看网站a| 精品国产一区二区三区久久久久久| 亚洲午夜色婷婷在线| 亚洲国产综合色| 国产乱子伦视频一区二区三区| 九九亚洲精品| 老色鬼在线视频| 91免费版在线观看| 国产 欧美 日韩 一区| 成人久久一区二区三区| 一本色道久久综合亚洲精品小说| 亚洲精品一二三四区| 加勒比av一区二区| 色婷婷综合网| 成人污污视频| 国产素人视频在线观看| 成年人福利视频| 欧美不卡在线播放| 日本10禁啪啪无遮挡免费一区二区 | 成人3d动漫网站|