当前位置:首页 > 技术文章 > 正文内容

Chrome “Local Overrides” 的本质

zonemu3个月前 (07-17)技术文章54

Chrome “Local Overrides” 的本质,就是在浏览器的网络层(Network/Fetch)给某些 URL 打了一个“本地文件映射”的钩子:


1. 你第一次对某资源点 “Save for overrides” 时,DevTools 会

- 通过 DevTools Protocol 的 Network/Fetch 接口让浏览器正常走一次网络请求,

- 在 `Network.responseReceived` → `Network.getResponseBody` 拿到服务器返回的内容,

- 写到你指定的本地 overrides 文件夹里,建立起「原 URL <-> 本地文件」的映射。


2. 之后每次页面加载到这个 URL:

- DevTools 在后台用 CDP 的 Fetch.enable({patterns:…}) 给浏览器注册一个请求拦截器,

- 当浏览器遇到匹配的请求,就触发 `Fetch.requestPaused`,

- DevTools 不让它走向网络,而是读取本地 overrides 目录下对应的文件,

- 用 `Fetch.fulfillRequest` 把文件内容(经过 base64 编码)当作“虚拟的 HTTP 响应”直接发给页面。


3. 如果某次你取消了 overrides 或删掉了本地文件,DevTools 会自动 `Fetch.continueRequest`,让请求恢复到正常的网络流程。


——


归纳下来,Local Overrides 的关键点:

- 利用 Chrome DevTools Protocol(尤其是 Fetch domain)在“请求发出前”/“响应回来后”挂钩;

- “Save for overrides” 时抓一次真响应并存盘;“生效时”直接从本地盘读并用虚拟响应替代网络;

- 对页面、脚本、样式、图片都通用,只要 URL 匹配就能无感替换。


这种机制让你在不动后端、不部署新版本的情况下,随时把线上资源换成本地修改版,刷新就见效。

相关文章

供热收费管理系统(供热收费管理系统有哪些)

今天来了解《#供热收费管理系统》,它包括如下功能:街道小区设置表格界面,热费标准设置表格界面,优惠设置表格界面,滞纳金设置表格界面,余热比例设置表格界面,用户录入信息窗口,用户档案表格界面,用户录入信...

Vue状态管理:Pinia完整指南(状态管理vuex)

概述本文专注于Vue的状态管理。我们将深入探讨如何使用Pinia来管理Vue应用程序的状态。状态管理使用props和emit进行父子组件间的数据协作虽然方便,但在以下情况下可能不够充分,数据传递往往会...

Python 实现 | 通过 Gitlab API 获取项目工程、分支、commit 提交记录

前提在 gitlab 中你的工程创建 Access Token然后你会得到一个 21 位 access token,代码中需要用到。代码''' 说明: 1.登录gitlab的r...

配置GitLab流水线和门禁系统(gitlab工作流)

在项目开发的过程中,为了保证代码质量,我们会使用诸多代码质量检测工具,这些工具或是在本地,或是在云端,虽然工具可以检测出异常问题,但是这些问题还是需要我们程序员来修复,如果我们不强制所有人必须修复异常...

使用Java统计gitlab代码行数(统计github代码行数的方法)

使用Java统计gitlab代码行数一、背景:需要对当前公司所有的项目进行代码行数的统计二、 可实现方式1.脚本:通过git脚本将所有的项目拉下来并然后通过进行代码行数的统计样例:echo 创建项目对...

全屋定制板材怎么选不出错?6 种板材深度对比,3 套方案闭眼选

装修选板材头疼吧?刚装完的柜子变形发霉,说好的环保结果甲醛超标,这种翻车现场见太多了。厨房卫生间千万别用密度板,这玩意儿遇水就膨胀,半年准完蛋。颗粒板性价比确实高,但小厂出的真心不敢用。环保等级至少得...