前端高频面试总结--HTTP 浏览器

 ####自用#### ...持续更新


目录

1、Ajax

3、HTTPS

4、HTTPS关键流程

5、状态码

6、TCP三次握手 四次挥手

7、OSI 七层模型  TCP/IP 四层模型

8、跨域

9、URL——>看到页面

10、浏览器渲染原理

11、浏览器缓存 (由高到低某一层命中就不向下查找)

12、内存泄漏

13、浏览器事件机制


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、内存泄漏

程序中分配的内存空间在不需要时未被正确释放或回收,导致内存空间无法被再次使用,最终导致内存资源的浪费和程序性能下降的现象,导致原因:

  1. 意外的全局变量
  2. 未及时清理定时器和时间监听器
  3. 闭包
  4. 缓存
  5. 循环引用:两个及以上对象之间相互引用形成闭环
  6. DOM操作:频繁增删改查
  7. 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 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值