17611538698
webmaster@21cto.com

HTTP库Axios推送损坏更新,致数千网站瘫痪

资讯 0 1120 2022-10-14 11:02:51

图片

Axios 是一款流行的基于Promise 的HTTP Web请求库,可运行在客户端与浏览器中。两种类型的库为同种架构,亦具有相同代码。

在服务器端Axios使用本机 node.js 模块,而在客户端(浏览器)中使用 XMLHttpRequests。

Axios 包含在 vanilla JavaScript、Vue、React 和 Node.js的库中。它的美妙之处在于它可以用最少的代码发出请求,甚至比 JavaScript 的原生Fetch API 还要少。

近日Axios 发生一起乌龙事件, Axios 的 1.1.0 版本发布后,在更新推送时其中的数据包发生损坏,这导致数千个网站瘫痪。

图片
在一位用户提交的 issue中这样描述道,他在更新 Axios v1.1.0 时,使用 axios.get 出现了Bug,浏览器工作台会提示 TypeError: axios.get is not a function,这导致网站的所有请求都无法成功。按照预期的行为,axios.get 是一个正确有效的函数。
这位用户附上了重现问题的方法,使用 <script> 引入 axio v1.1.0,然后直接引用 axios.get() 就能复现Bug:
<script src="https://unpkg.com/axios@1.1.0/dist/axios.min.js"></script><script>    axios.get(...)</script>
值得一提的是,在axios及以前版本,比如v1.0.0 中没有此Bug。
从 issue 的评论中,这些留言的开发者几乎清一色描述此Bug导致的环境崩溃。有开发者回滚到 1.0.0 发现能解决此问题,但因为有的 App 更新版本后需要再度审核,因此需要等待一时间不能立即修复。
也有的开发者认为,此Bug影响的开发者在某种程度上 “不值得同情”,因为他们的生产应用在 CDN 上使用了自动升级的方式,这种是十分不负责的行为。
axios 开发团队在确认Bug后,次日连续发布了两个补丁更新(v1.1.1 & v1.1.2)来修复,建议所有用户升级至最新版本。
相关链接:
https://www.reddit.com/r/programming/comments/xxu545/framework_axios_pushed_a_broken_update_crippling/
https://github.com/axios/axios/issues/5038

评论