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

本文由作者 王大神 原创发布于 大神网的AI博客。

转载请注明作者:王大神

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

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 2024年3月17日
下一篇 2024年3月17日

评论列表(2条)

  • Frank
    Frank 2024年4月19日 下午6:31

    这是自动挡变成了手动挡吧?汗