一、浏览器基础

1.1 浏览器内核

浏览器内核
ChromeBlink
FirefoxGecko
SafariWebKit
EdgeBlink (原 EdgeHTML)

1.2 浏览器调试工具

工具用途
ElementsDOM 元素审查
Console控制台日志
Network网络请求分析
Performance性能分析
Memory内存分析
Application存储管理
Sources源码调试

二、HTTP 协议

2.1 Content-Type

类型说明
application/x-www-form-urlencoded表单提交(默认)
application/jsonJSON 数据
application/xmlXML 数据
multipart/form-data文件上传
text/plain纯文本

2.2 常见请求头

请求头说明
Accept浏览器能处理的内容类型
Accept-Charset浏览器能显示的字符集
Accept-Encoding浏览器支持的压缩编码
Accept-Language浏览器语言设置
Connection连接类型(keep-alive)
Cookie当前域名的 Cookie
Host请求的域名
Referer来源页面 URL
User-Agent浏览器标识
If-None-Match缓存版本标识 (ETag)
If-Modified-Since最后修改时间
Authorization认证信息 (Bearer Token)

2.3 常见响应头

响应头说明
Content-Encoding编码方式 (gzip)
Content-Type内容类型
Content-Length内容长度
Date响应时间
Cache-Control缓存指令
Expires过期时间
Etag资源版本标识
Last-Modified最后修改时间
Set-Cookie设置 Cookie
Location重定向地址

三、存储方案对比

3.1 Cookie、LocalStorage、SessionStorage

特性CookieLocalStorageSessionStorage
容量4KB5MB5MB
生命周期可设置过期时间永久窗口关闭
作用域同源同源同源同窗口
自动携带
跨域共享❌ (可设置)
// 设置 document.domain 实现子域共享
// www.baidu.com 和 image.baidu.com
document.domain = "baidu.com"

3.3 IndexedDB

适用场景

存储大量结构化数据,支持索引和事务


四、缓存机制

4.1 缓存流程

1. 强制缓存 (Cache-Control / Expires)
   ↓ 失效
2. 协商缓存 (ETag / If-None-Match)
   ↓ 失效
3. 发送请求到服务器

4.2 缓存字段对比

字段说明优先级
Cache-Control控制缓存行为
Expires过期时间 (绝对时间)
ETag资源标识符
Last-Modified最后修改时间

五、浏览器攻击方式

5.1 XSS(跨站脚本攻击)

原理:注入恶意脚本到网页中执行

防御方案:

// 1. 转义特殊字符
function escapeHTML(str) {
  return str.replace(
    /[&<>"']/g,
    (char) =>
      ({
        "&": "&amp;",
        "<": "&lt;",
        ">": "&gt;",
        '"': "&quot;",
        "'": "&#39;",
      })[char],
  )
}
 
// 2. 使用 innerText 而非 innerHTML
// 3. CSP (内容安全策略)
// 4. 框架自带防护 (Vue/React 自动转义)

5.2 CSRF(跨站请求伪造)

原理:利用用户已登录状态发起恶意请求

防御方案:

  • 使用 CSRF Token
  • 验证 Referer / Origin
  • SameSite Cookie 属性
  • 二次验证

5.3 其他攻击

攻击类型说明防御
DDoS分布式拒绝服务限流、CDN
SQL 注入恶意 SQL 注入参数化查询

六、从 URL 到页面渲染

6.1 完整流程

1. URL 解析
   ↓
2. 缓存判断(强制缓存 → 协商缓存)
   ↓
3. DNS 解析(域名 → IP)
   ↓
4. TCP 三次握手
   ↓
5. HTTPS 握手(如果是 HTTPS)
   ↓
6. 发送 HTTP 请求
   ↓
7. 服务器处理并返回响应
   ↓
8. 浏览器渲染页面
   ↓
9. TCP 四次挥手

6.2 渲染过程

1. 解析 HTML 构建 DOM 树
   ↓
2. 解析 CSS 构建 CSSOM 树
   ↓
3. 合并为渲染树 (Render Tree)
   ↓
4. 布局 (Layout / Reflow)
   ↓
5. 绘制 (Paint)
   ↓
6. 合成 (Composite)

七、HTTP 状态码

分类说明常见状态码
1xx信息101 切换协议
2xx成功200 OK, 201 Created, 204 No Content
3xx重定向301 永久重定向,302 临时重定向,304 未修改
4xx客户端错误400 请求错误,401 未授权,403 禁止访问,404 未找到
5xx服务器错误500 服务器错误,501 未实现,502 网关错误,503 服务不可用

八、HTTP vs HTTPS

特性HTTPHTTPS
端口80443
证书无需需要 SSL 证书
加密明文传输SSL/TLS 加密
速度慢(握手开销)
安全性

九、跨域问题

9.1 同源策略

同源定义

相同协议、相同域名、相同端口

9.2 跨域解决方案

方案说明支持情况
JSONP利用 script 标签仅支持 GET
CORS跨域资源共享主流方案
postMessage窗口间通信iframe
WebSocket全双工通信实时通信
代理服务器Nginx/Node 代理开发环境

9.3 CORS 配置

// 服务端设置
res.setHeader("Access-Control-Allow-Origin", "*")
res.setHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE")
res.setHeader("Access-Control-Allow-Headers", "Content-Type, Authorization")

9.4 OPTIONS 预检请求

预检请求

复杂请求前浏览器自动发起的探测请求,用于确认服务器是否允许该跨域请求


十、GET vs POST

特性GETPOST
参数位置URL 中请求体中
安全性低(参数可见)相对安全
长度限制有(~2KB)无限制
幂等性幂等不幂等
缓存可缓存不缓存
用途获取数据提交数据

相关链接