为什么谷歌浏览器插件中不能使用xmlhttprequest(axios)

按照Chrome Extension官方说明,在MV3中,由于Service Workers的机制,background pages中不支持XMLHttpRequest,建议使用原生fetch()。由于axios使用的是XMLHttpRequest,因此,不能使用axios进行API请求。

在V3 (MV3) 版本中,Google 引入了Service Workers来替代传统的background pages作为扩展的后台进程。这一变更主要是出于安全性和性能的考虑。

Service Workers的设计初衷是处理网络请求、缓存以及提供离线支持,它们运行在一个沙盒化的环境中,拥有自己的执行上下文,与网页或其他Worker隔离。Service Workers不具有窗口上下文,因此不能直接使用一些与DOM(文档对象模型)相关的API,如XMLHttpRequest。

XMLHttpRequest(XHR)是一个与浏览器窗口上下文紧密绑定的API,它主要用于在浏览器环境中执行异步HTTP请求。

由于Service Worker没有直接访问DOM或浏览器窗口的权限,使用XHR会与Service Worker的设计原则冲突,可能导致安全漏洞或行为不可预测性。

因此,在Chrome Extension的MV3规范中,如果你需要在后台处理网络请求,应该使用fetch()方法而非XMLHttpRequest。对原有的background脚本进行相应的调整以兼容Service Worker的限制和特性。

相关推荐
zyl83721几秒前
Java 后端完整技术栈
java·开发语言
AI人工智能+电脑小能手2 分钟前
【大白话说Java面试题 第107题】【并发篇】第7题:说说 Lock 锁?
java·开发语言·面试
H178535090964 分钟前
SolidWorks_基于草图的实体特征14_扫描扭转与控制
前端·人工智能·算法·3d建模·solidworks
万岳科技系统开发5 分钟前
骑手配送系统如何支持外卖与跑腿一体化运营
大数据·前端·小程序
星栈独行7 分钟前
用 Rust + Makepad 做一个 JSON 查看器:从零到能用的全过程
开发语言·程序人生·ui·rust·json
咸鱼翻身小阿橙7 分钟前
VS2008 C# WinForm 简易计算器
开发语言·c#
meilindehuzi_a8 分钟前
深入理解JavaScript线性数据结构:从内存视角探究数组、链表、栈与队列
javascript·数据结构·链表
1892280486110 分钟前
NV091固态MT29F16T08EWLCHD8-QJES:C
c语言·开发语言
杨了个杨898214 分钟前
Dockerfile介绍及镜像制作
java·开发语言
雨季mo浅忆15 分钟前
Cursor快速实现上传Excel功能
前端·vue3·ai编程