1.hash與history的區(qū)別
-
hash模式和history模式都屬于瀏覽器自身的特性, Vue-Router只是利用了這兩個(gè)特性 (通過(guò)調(diào)用瀏覽器提供的接口)來(lái)實(shí)現(xiàn)前端路由。 - hash是基于瀏覽器的
onhashchange事件,做到url改變而頁(yè)面不刷新 - history是利用了 HTML5 History Interface 中新增的pushState()和replaceState()方法來(lái)做到url改變而頁(yè)面不刷新
- 當(dāng)手動(dòng)f5時(shí),hash不會(huì)將#號(hào)后的內(nèi)容傳遞給服務(wù)端,而history會(huì)傳遞完整路徑,這可能導(dǎo)致路徑不匹配造成404,解決方案是后臺(tái)針對(duì)不匹配時(shí)跳轉(zhuǎn)默認(rèn)頁(yè)面
2.localStorage sessionStorage cookies 有什么區(qū)別
- 存儲(chǔ)大小
- 有效期
- 參與請(qǐng)求
3.http https 有什么區(qū)別
- HTTPS協(xié)議需要CA證書,費(fèi)用較高;而HTTP協(xié)議不需要
- HTTP協(xié)議是超文本傳輸協(xié)議,信息是明文傳輸?shù)?HTTPS則是具有安全性的SSL加密傳輸協(xié)議;
- 使用不同的連接方式,端口也不同,HTTP協(xié)議端口是80,HTTPS協(xié)議端口是443;
- HTTP協(xié)議連接很簡(jiǎn)單,是無(wú)狀態(tài)的;HTTPS協(xié)議是具有SSL和HTTP協(xié)議構(gòu)建的可進(jìn)行加密傳輸、身份認(rèn)證的網(wǎng)絡(luò)協(xié)議,比HTTP更加安全
4.身份認(rèn)證機(jī)制
- 為什么需要身份認(rèn)證機(jī)制?Http協(xié)議的無(wú)狀態(tài)性,每次請(qǐng)求都是獨(dú)立的,服務(wù)器無(wú)法識(shí)別客戶端
- session認(rèn)證機(jī)制:
1.利用cookie(相當(dāng)于會(huì)員卡號(hào)碼),cookie是以鍵值對(duì)方式存儲(chǔ)的,不超過(guò)4kb,是服務(wù)端放到我們客戶端瀏覽器中的,每個(gè)cookie都是域名獨(dú)立的,可以設(shè)置有效期,每次訪問(wèn)同一域名,就會(huì)自動(dòng)發(fā)送該域名下的未過(guò)期的cookie。
2.在服務(wù)器端進(jìn)行身份認(rèn)證(刷卡驗(yàn)證),驗(yàn)證cookie的正確性- JWT認(rèn)證機(jī)制:cookie默認(rèn)不支持跨域訪問(wèn),JWT認(rèn)證機(jī)制是跨域解決方案
1.token是以:header(頭部).payload(用戶信息).signature(簽名)三部分組成,其中頭部是固定的,例如{type: "JWT", alg: "HS256"},中間部分一般存放用戶id,簽名部分是用頭部和用戶信息加上秘鑰加密而成,只要秘鑰不丟失,可以認(rèn)為是安全,這個(gè)秘鑰是服務(wù)器端確定和保存
2.JWT認(rèn)證,主要就是驗(yàn)證signature是否合法- 兩者區(qū)別:session客戶信息放在服務(wù)端,jwt客戶信息放在客戶端:

Snipaste_2022-05-20_16-45-36.png

Snipaste_2022-05-20_16-50-41.png