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

Chrome “Local Overrides” 的本质

zonemu2个月前 (07-17)技术文章31

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 匹配就能无感替换。


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

相关文章

用IDEA开发如何用Git快速拉取指定分支代码?

1,准备空的文件夹,git init2,关联远程仓库,git remote add origin gitlab地址3,拉取远程分支代码,git pull origin 远程分支名再用IDEA打开项目即...

(一)熟练HTML5+CSS3,每天复习一遍

前言学习网页的概念和分类,了解静态网页和动态网页的不同;了解网页浏览器的工作原理。了解HTML,XHTML,HTML5的概念,制作简单的HTML页面的开发。什么是网页可以在internet上通过网页浏...

HTML5+眼球追踪?黑科技颠覆传统手机体验

今天,iH5工具推出一个新的神秘功能——眼动追踪,可以通过摄像头捕捉观众眼球活动!为了给大家具体演示该功能的使用,我做了一个案例,供大家参考。实际效果如下:案例比较简单,就是通过眼动功能获取视觉焦点位...

HTML5与APP的抉择(h5与app的区别)

同为当下炙手可热的技术,围绕APP和HTML5难免少不了各种争辩。而在“互联网+”时代,许多面临转型的传统企业,也在选择转型工具时,陷入了HTML5或APP的纠结抉择之中……到底该选择HTML5还是A...

为了成为Claude Code高手,我雇了个AI当教练

在AI编程的浪潮中,如何高效提升编程能力成为许多开发者关注的焦点。本文作者通过自身实践,分享了如何利用AI工具(如Claude Code和Cursor)进行编程协作,并通过“学习导航器”提示词实现高效...

数组、去重、排序、合并、过滤、删除

ES6数字去重 Array.from(new Set([1,2,3,3,4,4])) //[1,2,3,4] [...new Set([1,2,3,3,4,4])] //[1,2,3,4]2...