1.hash与history的区别
https://zhuanlan.zhihu.com/p/364019280
-
hash
模式和 history
模式都属于浏览器自身的特性, Vue-Router只是利用了这两个特性 (通过调用浏览器提供的接口)来实现前端路由。
- hash是基于浏览器的
onhashchange
事件,做到url改变而页面不刷新
- history是利用了 HTML5 History Interface 中新增的pushState()和replaceState()方法来做到url改变而页面不刷新
- 当手动f5时,hash不会将#号后的内容传递给服务端,而history会传递完整路径,这可能导致路径不匹配造成404,解决方案是后台针对不匹配时跳转默认页面
2.localStorage sessionStorage cookies 有什么区别
https://blog.csdn.net/first_shun/article/details/115747681
3.http https 有什么区别
- HTTPS协议需要CA证书,费用较高;而HTTP协议不需要
- HTTP协议是超文本传输协议,信息是明文传输的,HTTPS则是具有安全性的SSL加密传输协议;
- 使用不同的连接方式,端口也不同,HTTP协议端口是80,HTTPS协议端口是443;
- HTTP协议连接很简单,是无状态的;HTTPS协议是具有SSL和HTTP协议构建的可进行加密传输、身份认证的网络协议,比HTTP更加安全
4.身份认证机制
- 为什么需要身份认证机制?Http协议的无状态性,每次请求都是独立的,服务器无法识别客户端
- session认证机制:
1.利用cookie(相当于会员卡号码),cookie是以键值对方式存储的,不超过4kb,是服务端放到我们客户端浏览器中的,每个cookie都是域名独立的,可以设置有效期,每次访问同一域名,就会自动发送该域名下的未过期的cookie。
2.在服务器端进行身份认证(刷卡验证),验证cookie的正确性
- JWT认证机制:cookie默认不支持跨域访问,JWT认证机制是跨域解决方案
1.token是以:header(头部).payload(用户信息).signature(签名)三部分组成,其中头部是固定的,例如{type: "JWT", alg: "HS256"},中间部分一般存放用户id,签名部分是用头部和用户信息加上秘钥加密而成,只要秘钥不丢失,可以认为是安全,这个秘钥是服务器端确定和保存
2.JWT认证,主要就是验证signature是否合法
- 两者区别:session客户信息放在服务端,jwt客户信息放在客户端:
Snipaste_2022-05-20_16-45-36.png
Snipaste_2022-05-20_16-50-41.png