URL从输入到显示会发生什么?
MDN的解释:https://developer.mozilla.org/zh-CN/docs/Web/Performance/Guides/How_browsers_work
用户退出重定向到登录如何规划逻辑?
- 前端
- 向后端发退出请求
- 重定向到登录页
- 对需要登录的页面进行路由保护
- 后端
- 提供退出接口
- 为已经退出的token,设置token黑名单
讲讲 CSRF-Token 的细节
Cross-Site Request Forgery, 跨站请求伪造。
用户登录了一个安全的域名,然后访问了一个恶意网站,恶意网站携带一个自动的请求,指向那个安全的域名的敏感接口。
此时浏览器会自动带上安全的域名的token,导致服务器以为是用户本人操作,导致攻击成功。
csrf token的原理是 收到浏览器同源策略的限制,攻击者在恶意网站无法获取到可信网站的token。 服务端服务端自己不存储 CSRF-Token,会比较cookie中和http头中的token是否一致。
localStorage、sessionStorage、Cookie 的区别
特性 | Cookie | localStorage | sessionStorage |
---|---|---|---|
生命周期 | 可设置过期时间,关闭浏览器后依然存在 | 永久存在,除非手动清除 | 当前会话有效,关闭标签页或浏览器后清除 |
存储大小 | 约 4KB | 约 5MB ~ 10MB | 约 5MB ~ 10MB |
与服务端通信 | 每次 HTTP 请求都会自动携带 | 仅在客户端,不自动发送 | 仅在客户端,不自动发送 |
作用域 | 同源下的所有窗口和标签页共享 | 同源下的所有窗口和标签页共享 | 仅在当前浏览器标签页内有效,不同标签页不共享 |
API 易用性 | 需手动封装,操作繁琐 | 提供 setItem , getItem 等原生 API,简单易用 | 与 localStorage API 相同 |
- localstorage 和 sessionstorage 区别
- 是否会自动清除
- 标签页是否共享
- 同一个站点 localstorage 超出最大容量,别人影响了你,导致你存不进去了,这样怎么解决?
- 从项目管理的角度:使用约定式的前缀,定好一个key,区分来自于哪个页面或者是哪个业务,然后对他进行管理,也就是沟通后,让别人清除。
- 从技术角度:使用一个第三方库,比如
localforage
,他可以自动管理存储空间,当超出最大容量时,会自动清除旧的存储。
双token的两个token分别是做什么的?
一个获取数据,一个用于获取前一个token。 一般返回的时候都会刷新,如何refresh