为什么谷歌浏览器插件中不能使用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的限制和特性。

相关推荐
明月_清风1 分钟前
你真的懂 JSON 吗?那些被忽略的底层边界与性能陷阱
前端·json
wjs20244 分钟前
Bootstrap4 图像形状
开发语言
明月_清风10 分钟前
大规模监控数据下的 JSON 优化:从 OOM 崩溃到极致吞吐的进阶之路
前端·json
枫叶丹41 小时前
【Qt开发】Qt界面优化(四)-> Qt样式表(QSS) 选择器概况
c语言·开发语言·c++·qt
郝学胜-神的一滴1 小时前
深入理解TCP连接的优雅关闭:半关闭状态与四次挥手的艺术
linux·服务器·开发语言·网络·tcp/ip·程序人生
yaoxin5211232 小时前
325. Java Stream API - 理解 Collector 的三大特性:助力流处理优化
java·开发语言
打瞌睡的朱尤8 小时前
Vue day10 完整购物网页(登录页,首页,搜索)
前端·javascript·vue.js
光泽雨8 小时前
C# 中 Assembly 类详解
开发语言·c#
少控科技9 小时前
C#基础训练营 - 02 - 运算器
开发语言·c#
扶苏10029 小时前
深入理解 Vue 3 的 watchEffect
前端·javascript·vue.js