Skip to content

场景题

1. URL 从输入到显示会发生什么?

标准答法

  • DNS 解析
  • 建立 TCP 连接(HTTPS 还包含 TLS 握手)
  • 发起 HTTP 请求并接收响应
  • 浏览器解析 HTML/CSS/JS,构建 DOM/CSSOM
  • 生成 Render Tree,布局、绘制、合成

关键点

  • 渲染主流程:解析 → 构建树 → 布局 → 绘制 → 合成
  • 关键路径优化:减少阻塞资源、利用缓存

追问

  • HTTP/1.1 与 HTTP/2 的差异?
  • 解析过程中 JS 为什么会阻塞渲染?

2. 用户退出后重定向到登录,如何规划逻辑?

标准答法

  • 前端:
    • 调用退出接口
    • 清理本地状态(token、用户信息)
    • 重定向到登录页
    • 对需登录页面做路由守卫
  • 后端:
    • 提供退出接口
    • 将 token 拉黑或缩短有效期

关键点

  • 退出要同时清理本地与服务端状态
  • 路由守卫避免“退出后回退”

追问

  • 单点登录场景如何处理退出?

3. 讲讲 CSRF-Token 的细节

标准答法

  • CSRF 是跨站请求伪造,利用浏览器自动携带 Cookie 造成越权请求
  • 防护方式:
    • 同源策略限制攻击者读取 token
    • 服务端生成 CSRF token,要求请求携带并校验

关键点

  • 服务端一般不在 Cookie 中读取 token,而是对比 Cookie 与请求头/表单字段
  • 可配合 SameSite Cookie 降低风险

追问

  • CSRF 与 XSS 的差异?
  • SameSite=Lax/Strict/None 的区别?

4. localStorage、sessionStorage、Cookie 的区别

特性CookielocalStoragesessionStorage
生命周期可设置过期时间,关闭浏览器后依然存在永久存在,除非手动清除当前会话有效,关闭标签页或浏览器后清除
存储大小约 4KB约 5MB ~ 10MB约 5MB ~ 10MB
与服务端通信每次 HTTP 请求都会自动携带仅在客户端,不自动发送仅在客户端,不自动发送
作用域同源下的所有窗口和标签页共享同源下的所有窗口和标签页共享仅在当前浏览器标签页内有效,不同标签页不共享

关键点

  • localStorage 与 sessionStorage 的核心差异是生命周期与标签页共享
  • 大容量存储建议使用 IndexedDB 封装库(如 localforage)

追问

  • localStorage 超出容量怎么办?
  • Cookie 如何设置 HttpOnly/SameSite?

5. 双 token 的两个 token 分别做什么?

标准答法

  • access token:用于请求业务接口,生命周期短
  • refresh token:用于刷新 access token,生命周期长

关键点

  • refresh token 应存储更安全(如 HttpOnly Cookie)
  • 业务接口只接受 access token

追问

  • refresh token 被盗如何止损?
本站访客数 人次 本站总访问量