####自用#### ...持续更新
目录
1、Ajax
Ajax:核心浏览器提供的XMLHttpRequest对象实现异步通信
步骤:1.创建XMLHttpRequest对象 const xhr = new XMLHttpRequest();
2.打开链接,设置请求行 xhr.open(‘GET’ , ‘http//~’ , true);
3.设置请求头 get无 xhr.setRequestHeader()
4.监视状态变化 xhr.onreadystatechange = function(){
If(xhr.readyState ===4){
If(xhr.status === 200){ //处理响应
Const responseData = JOSON.parse(xhr.responseText);
}else{...}
}
5.设置请求体 get无null xhr.send()
fetch API fetch(‘https:-----’).then(response => response.json() ).then(data => console.log(data));
Ajax优势: 无刷新更新页面,异步通信,减轻服务器负担
劣势:浏览器兼容问题 安全问题跨域 影响Seo 异步加载爬虫可能无法正常抓取页面内容
2、HTTP 超文本传输协议
1.组成:请求行请求头请求体
2.请求方法:get post put delete head (get post区别:get参数在URL上可见有长度限制,用于获取数据post参数在请求体不可见,无长度限制,用于提交数据)
3.版本:HTTP/1.0:无状态,每次请求需要建立新的TCP连接效率低
HTTP/1.1:持久连接,多个请求可复用一个TCP连接,减少连接建立和关闭的开销。
HTTP/2.0:解决队头阻塞问题,通过多路复用提高传输效率。
HTTP/3.0:解决TCP拥塞和丢包问题,低延迟高性能。
4.HTTP和https:https进行了ssl/tls加密,需要证书
HTTP端口80 https443
性能:https有加密操作消耗资源网咯延迟。
3、HTTPS
HTTPS 的安全核心是 TLS(Transport Layer Security,传输层安全),其前身为 SSL(Secure Sockets Layer),TLS 依赖「非对称加密 + 对称加密 + 数字证书」三重机制实现安全传输。
1.两种加密算法的协同
非对称加密(公钥加密):
原理:生成一对「公钥 - 私钥」,公钥可公开,私钥仅服务器持有;公钥加密的数据仅私钥能解密,私钥加密的数据仅公钥能解密。
用途:仅用于 握手阶段,安全地传递「对称加密的密钥」(避免密钥在传输中被窃听)。
缺点:加密解密速度慢,不适合大量数据传输。
对称加密:
原理:使用同一把「对称密钥」加密和解密数据,密钥需客户端和服务器共同持有且保密。
用途:用于 数据传输阶段,对 HTTP 请求 / 响应的实际内容(如 HTML、JSON)进行加密。
优点:加密解密速度极快,适合大量数据传输。
2.数字证书:解决「公钥信任」问题
非对称加密中,公钥需从服务器传递给客户端,但攻击者可能伪造公钥(“中间人攻击”)。因此,HTTPS 引入 数字证书 验证公钥合法性,证书由权威机构(CA,Certificate Authority)颁发:
证书包含内容:服务器域名、服务器公钥、CA 签名、证书有效期等。
核心作用:证明 “该公钥确实属于对应域名的服务器”—— 客户端可通过 CA 的根证书(预装在浏览器 / 操作系统中)验证证书签名,确认公钥未被篡改。
4、HTTPS关键流程
HTTPS 握手 与 数据传输
HTTPS 通信分为「TLS 握手阶段」和「数据传输阶段」,其中握手阶段是安全的核心。以主流的 TLS 1.2 为例,握手流程如下(TLS 1.3 简化了步骤,减少网络往返):
数据传输阶段
握手完成后,客户端和服务器通过 对称密钥 加密 HTTP 数据:
客户端:将 HTTP 请求(如 GET /index.html)用对称密钥加密,通过 TCP 发送给服务器;
服务器:用对称密钥解密数据,处理请求后,将 HTTP 响应(如 HTML 内容)加密,返回给客户端;
客户端:解密响应数据,渲染页面。
5、状态码
1. 2xx 成功类
200 OK:请求完全成功,服务器返回预期数据(如网页、接口正常响应)。
204 No Content:请求成功,但无数据返回(如DELETE请求删除资源后)。
206 Partial Content:部分请求成功,用于断点续传(配合Range请求头)。
2. 3xx 重定向类
301 Moved Permanently:永久重定向,原 URL 失效(如旧域名跳转新域名)。
302 Found:临时重定向,原 URL 仍有效(如临时维护页跳转,可能转换请求方法)。
303 See Other:临时重定向,强制客户端用GET方法访问目标 URL(常用于POST请求后跳 转,避免刷新页面重复提交,如表单提交成功后跳转到结果页)。
304 Not Modified:协商缓存命中,客户端直接使用本地缓存。
3. 4xx 客户端错误类
400 Bad Request:请求参数错误 / 格式非法(如接口传参缺失、JSON 错误)。
401 Unauthorized:未授权,需用户身份验证(如未登录访问需登录接口)。
403 Forbidden:已认证但无权限(如普通用户访问管理员页面)。
404 Not Found:服务器找不到请求资源(如 URL 错误、资源已删)。
405 Method Not Allowed:请求方法不被允许(如GET访问仅支持POST的接口)。
429 Too Many Requests:请求过于频繁,触发限流。
4. 5xx 服务器错误类
500 Internal Server Error:服务器内部代码异常(如程序崩溃、数据库连接失败)。
502 Bad Gateway:网关错误,上游服务器(如后端服务)响应无效。
503 Service Unavailable:服务器暂时不可用(如维护、负载过高)。
504 Gateway Timeout:网关超时,等待上游服务器响应超时。
6、TCP三次握手 四次挥手
三次握手:客户端发送syn包,请求建立连接,进入syn_sent状态
服务器收到后回发syn+ack包,同意连接,进入syn_rcvd状态
客户端再2发送ack包,连接建立,双方进入established状态
四次挥手:客户端发送FIN包,请求关闭连接,进入FIN_WAIT_1状态
服务器收到后发ack包,进入close_wait状态,客户端进入fin_wait_2状态
服务器处理完数据后发FIN包,进入last-ack状态
客户端收到后发ack包,进入time_wait状态,服务器关闭连接,客户端等待一段时 间也关闭。
7、OSI 七层模型 TCP/IP 四层模型
1. OSI 七层模型(理论参考模型) 应用层 表示层 会话层 传输层 网络层 数据链路层 物理层
2. TCP/IP 四层模型(实际应用模型) 应用层 传输层 网络层 网络接口层
8、跨域
同源策略 协议 域名 端口
解决跨域 1、jsonp跨域:利用 <script> 标签不受同源策略限制的特性,仅支持 GET 请求
2、CORS跨域资源共享 :后端设置响应头
Access-Control-Allow-Origin: 允许访问的域名
Access-Control-Allow-Methods: 允许的HTTP方法
Access-Control-Allow-Headers: 允许的请求头
3、Nginx代理
开发环境:webpack-dev-server 配置 proxy
生产环境:Nginx 反向代理
iframe 相关方案:如 postMessage 实现跨域通信
WebSocket:建立持久连接,不受同源策略限制
9、URL——>看到页面
URL·>浏览器DNS解析·>TCP连接·>发HTTP请求·>服务器处理请求·>发送HTTP响应·>浏览器解析渲染界面
10、浏览器渲染原理
HTML→DOM树
→Render Tree→Layout/Reflow→Paint/repaint→Composite合成
CSS→CSSOM树
重排(回流) 影响布局 修改样式布局 Dom元素 性能消耗大(重新计算渲染树和布局)
重绘 仅样式外观改变 非布局相关属性改变 性能消耗小
11、浏览器缓存 (由高到低某一层命中就不向下查找)
1.Service Worker
2.Memory Cache 内存缓存
3.HTTP Cache
HTTP缓存 强缓存:浏览器首次请求资源,服务器返回资源同时在响应头中加Expires和Cache- Control(CC优先级高)
协商缓存:当强制缓存失效后,浏览器会携带缓存标识向服务器发起请求,由服务器根 据缓存标识决定是否使用缓存。控制协商缓存的字段有Last-Modified/If- Modified-Since和Etag/If-None-Match。
4.Disk Cache 磁盘缓存
5.Push Cache 推送缓存
12、内存泄漏
程序中分配的内存空间在不需要时未被正确释放或回收,导致内存空间无法被再次使用,最终导致内存资源的浪费和程序性能下降的现象,导致原因:
- 意外的全局变量
- 未及时清理定时器和时间监听器
- 闭包
- 缓存
- 循环引用:两个及以上对象之间相互引用形成闭环
- DOM操作:频繁增删改查
- Console
......
垃圾回收机制是浏览器管理内存、确保资源有效利用的关键部分。当变量、对象或其他资源不再被使用时,垃圾回收机制会自动释放它们所占用的内存,从而防止内存泄漏。
13、浏览器事件机制
事件触发、传播、处理
事件传播:捕获阶段:外层HTML元素开始捕获向下传递到目标元素
目标阶段:目标元素执行
冒泡阶段:目标元素向上回溯
事件循环Event Loop
事件循环是 JavaScript 处理异步操作的核心机制
同步任务--异步任务 宏任务:script 整体代码、setTimeout、setInterval、DOM 事件、I/O 操作、 UI 渲染等
微任务:Promise.then/catch/finally、async/await...
注:requestAnimationFrame不属于微宏任务 浏览器动画API
执行流程:
执行调用栈中的同步任务,直到栈空
执行所有微任务队列中的任务(按顺序执行,执行过程中新增的微任务也会在本轮执行)
执行一次UI 渲染(可选,浏览器自主决定)
从宏任务队列中取一个任务执行
重复步骤 2-4,形成循环
Start、End、Promise 1、Promise 2、Timeout 1、Timeout 2、Promise in Timeout 1