Chrome插件大变革:Manifest V3下的Ajax请求拦截之旅

摘要:在Chrome插件开发的世界中,Manifest V3引起了不小的震动。作为一个有过丰富开发经验的程序员,我将在这篇文章中分享我如何适应这一变革,尤其是在拦截和获取Ajax请求(XHR/Fetch)方面的经验。加入我,一起探索这一技术挑战背后的趣味和机遇。


作为一名长期深耕于Chrome插件开发的程序员,我见证了从Manifest V2到Manifest V3的过渡。这一过程中,最让我印象深刻的莫过于如何在V3版本下拦截和获取Ajax请求了。你可能会问,这有什么难的?嗯,坐稳了,让我带你一起经历这段既充满挑战又不失幽默的旅程。

为何Manifest V3给Ajax请求带来挑战?

在Manifest V3(以下简称MV3)出现之前,我们习惯于使用webRequestAPI来拦截和修改网络请求,包括那些XHR或Fetch发起的Ajax请求。然而,MV3引入了declarativeNetRequestAPI,并限制了webRequestAPI的能力,理由是出于提高性能和安全性的考虑。这就好比是从手动变速车换到了自动挡,虽然自动挡对很多人来说更加方便和安全,但对于喜欢手动操控的我来说,一时间还真是不太习惯。

挑战接受:适应MV3的新旅程

初探declarativeNetRequestAPI

我的第一步是尝试理解declarativeNetRequestAPI如何工作。简单来说,这个API允许你声明规则来拦截、修改或重定向网络请求。听起来挺简单的,对吧?然而,实际上要精确定义这些规则,并不是一件容易的事。

实践案例:拦截XHR请求

在我第一个MV3项目中,我需要拦截所有发往特定API的XHR请求,并检查其返回内容。在MV2时代,我只需几行代码就能轻松完成。但在MV3中,我不得不编写了一大堆规则,并确保它们既不过于宽泛,也不会错过任何请求。

{
  "id": 1,
  "action": {
    "type": "modifyHeaders",
    "responseHeaders": [
      { "header": "Access-Control-Allow-Origin", "operation": "set", "value": "*" }
    ]
  },
  "condition": {
    "urlFilter": "example.com/api/*",
    "resourceTypes": ["xmlhttprequest"]
  }
}

踩坑记:当规则不生效时

最有趣(也是最令人沮丧)的一次经历是,我定义的规则突然不生效了。经过一番调试(和不少的咖啡),我发现是因为我达到了Chrome对规则数量的限制。是的,你没听错,MV3对你可以定义的规则数量有限制,而这个“小细节”在文档中提得并不多。

MV3下的Ajax请求拦截技巧

  • 精确的规则定义:确保你的规则既不太宽泛也不太具体,这需要一些试错和经验积累。
  • 优化性能:由于规则数量有限,合理组织和优化你的规则变得至关重要。
  • 持续学习:Chrome的开发团队不断更新文档和API,保持学习态度,及时调整你的插件。

结语

通过这次MV3的Ajax请求拦截之旅,我不仅提升了自己的技术能力,还学会了面对变化的心态。是的,遇到困难时我会感到沮丧,但解决问题的喜悦和获得的成长远远超过了这些瞬间的挫败感。

声明:本站所有文章,如无特殊说明或标注,均为本站(王大神)原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

给TA打赏
共{{data.count}}人
人已打赏
指数词

从抑郁走向自我救赎:我的音乐与编程之旅

2024-3-17 18:58:54

指数词

借钱给朋友后他们为什么不还——一次深度解析和个人经验分享

2024-3-17 19:12:09

2 条回复 A文章作者 M管理员

评论已经关闭

  1. 这是自动挡变成了手动挡吧?[汗]

    • 这个比喻很恰当。

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索