axios CDN引入实战:jsDelivr与unpkg一行搞定浏览器直用
2026/8/29 8:26:09 网站建设 项目流程

axios CDN引入实战:jsDelivr与unpkg一行搞定浏览器直用

【免费下载链接】axiosPromise based HTTP client for the browser and node.js项目地址: https://gitcode.com/GitHub_Trending/ax/axios

场景:纯静态页想发请求,不想上构建工具

刚建了一个纯 HTML 的静态页,想发个 HTTP 请求,但不想为此装 Node、配 Webpack 那一套。把 axios 通过 CDN 引入就行,一条<script>标签直接跑起来。jsDelivr 和 unpkg 两条路下面都走一遍,代码全部可直接复制。

一分钟搞懂:CDN引入 axios 到底省了哪一步

  • axios 是一个基于 Promise 的 HTTP 客户端,浏览器和 Node 都能用,GET、POST、拦截器这些常用能力都有
  • 常规用法是npm install axios再经构建工具打包;CDN引入就是跳过这一步
  • 原理:两个 CDN 都按 npm 包分发,路径同为dist/axios.min.js,加载后挂在window.axios
  • 本仓库当前主线版本是 1.19.0,后文示例统一锁这个版本

动手实操:两条路径走一遍

jsDelivr:一行引入,国内访问快不少

基础引入(最新稳定版):

<script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>

锁版本写法——别用 latest,线上项目锁死版本号:

<script src="https://cdn.jsdelivr.net/npm/axios@1.19.0/dist/axios.min.js"></script>

最小可运行完整示例(含 GET、POST 和错误处理),保存为index.html双击浏览器打开即可:

<!doctype html> <html lang="zh-CN"> <head> <meta charset="utf-8"> <title>axios CDN引入示例</title> </head> <body> <h1>GET 结果</h1> <pre id="get-result">加载中…</pre> <h1>POST 结果</h1> <pre id="post-result">加载中…</pre> <!-- jsDelivr 引入,锁定版本 1.19.0 --> <script src="https://cdn.jsdelivr.net/npm/axios@1.19.0/dist/axios.min.js"></script> <script> // GET:取一条用户数据 axios.get('https://jsonplaceholder.typicode.com/users/1') .then(function (res) { document.getElementById('get-result').textContent = JSON.stringify(res.data, null, 2); }) .catch(function (err) { // 网络错误、超时都会走这里 document.getElementById('get-result').textContent = 'GET 失败:' + err.message; }); // POST:提交一条 JSON axios.post('https://jsonplaceholder.typicode.com/posts', { title: 'CDN示例', body: '通过 jsDelivr 引入的 axios 发出的 POST' }) .then(function (res) { document.getElementById('post-result').textContent = 'POST 成功,服务器回显:\n' + JSON.stringify(res.data, null, 2); }) .catch(function (err) { document.getElementById('post-result').textContent = 'POST 失败:' + err.message; }); </script> </body> </html>

unpkg:一行引入,写法略有不同

基础引入:

<script src="https://unpkg.com/axios/dist/axios.min.js"></script>

锁版本写法:

<script src="https://unpkg.com/axios@1.19.0/dist/axios.min.js"></script>

完整示例换成 unpkg,页面改成按钮触发 POST,结构上换一种写法让你对比:

<!doctype html> <html lang="zh-CN"> <head> <meta charset="utf-8"> <title>axios unpkg 引入示例</title> </head> <body> <h1>GET 结果</h1> <pre id="get-result">加载中…</pre> <button id="send">发送 POST</button> <h1>POST 结果</h1> <pre id="post-result">等待点击…</pre> <!-- unpkg 引入,锁定版本 1.19.0 --> <script src="https://unpkg.com/axios@1.19.0/dist/axios.min.js"></script> <script> // 页面加载时先发一个 GET axios.get('https://jsonplaceholder.typicode.com/users/1') .then(function (res) { document.getElementById('get-result').textContent = JSON.stringify(res.data, null, 2); }) .catch(function (err) { document.getElementById('get-result').textContent = 'GET 失败:' + err.message; }); // 点击按钮才发 POST document.getElementById('send').onclick = function () { axios.post('https://jsonplaceholder.typicode.com/posts', { title: 'unpkg 测试' }) .then(function (res) { document.getElementById('post-result').textContent = 'POST 成功:' + JSON.stringify(res.data, null, 2); }) .catch(function (err) { document.getElementById('post-result').textContent = 'POST 失败:' + err.message; }); }; </script> </body> </html>

两个页面都能直接跑通,先跑通再优化。

方案横向对比

对比维度jsDelivrunpkg
全球节点数100+(Cloudflare 网络支撑)约 20 个
国内访问速度较快,国内访问稳定不少一般,高峰期偶有波动
版本控制支持精确版本号、semver 范围支持精确版本号
缓存策略版本号 URL 长期缓存,命中率高按资源路径缓存,锁版本后同样稳定
SRI/子资源完整性官方页面可直接给出 integrity 值需自行计算哈希

选型建议一句话:面向国内用户优先选 jsDelivr;纯海外项目两者皆可,但无论选哪个都要锁版本。

版本管理与安全加固

为什么必须锁版本

不锁版本时,上游发新版可能引入破坏性变更,你的页面某天突然挂掉。

<!-- 推荐:锁定到具体版本,行为可预期 --> <script src="https://cdn.jsdelivr.net/npm/axios@1.19.0/dist/axios.min.js"></script> <!-- 不推荐:始终拉最新,出问题查不到根因 --> <script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>

SRI 子资源完整性怎么用

SRI 让浏览器校验脚本内容哈希,防止 CDN 被投毒后下发的文件被篡改。

<!-- integrity 值 = 对 axios.min.js 文件内容算 sha256 后的 base64 --> <script src="https://cdn.jsdelivr.net/npm/axios@1.19.0/dist/axios.min.js" integrity="sha256-这里替换为对应版本的真实哈希" crossorigin="anonymous"></script>

哈希获取:下载该版本文件后本地算一下即可——

openssl dgst -sha256 -binary axios.min.js | openssl base64 -A

备用 CDN 兜底写法

主 CDN 挂了不至于白屏,加载失败就切 unpkg 再试一次:

<script src="https://cdn.jsdelivr.net/npm/axios@1.19.0/dist/axios.min.js"></script> <script> // 主源没加载上 window.axios,就同步补一个备用源 if (!window.axios) { document.write('<script src="https://unpkg.com/axios@1.19.0/dist/axios.min.js"><\/script>'); } </script>

踩坑清单:跨域、加载失败、版本冲突

1. 控制台报 CORS 错误

  • 现象:请求发出后报blocked by CORS policy,数据拿不到
  • 原因:是目标 API 服务器没返回Access-Control-Allow-Origin响应头,和 CDN 无关(CDN 只负责托管 axios 库本身)
  • 解法:让接口服务端加头,Node 侧最小改动:
res.setHeader('Access-Control-Allow-Origin', '*');

2. 页面报 axios is not defined

  • 现象window.axios是 undefined,脚本 404
  • 原因:版本号写错(不存在的版本直接 404),或路径少写了dist/
  • 解法:核对版本,并按上文"备用 CDN 兜底"加一层!window.axios检查

3. 全局变量被多库污染

  • 现象:页面同时挂了两个库,axios 行为诡异
  • 原因:某个依赖库内部也引入了旧版 axios,互相覆盖全局变量
  • 解法:全项目统一锁一个版本,重复依赖只保留一份

4. GET 数据总是旧的

  • 现象:后端改了数据,前端刷新还是老数据
  • 原因:浏览器对 GET 响应做了缓存
  • 解法:请求参数里加时间戳强制绕过:
axios.get('/api/list', { params: { t: Date.now() } });

⚠️ 四条里第 1 条最高频:CDN 引入本身不会制造跨域,跨域永远找接口方解决。

进阶:拦截器与自定义配置

CDN 环境拿到的是全局axios,拦截器、自定义实例这些进阶能力照样可用。下面这段演示"请求自动带 token + 响应统一处理 401",直接复制就能用:

<script src="https://cdn.jsdelivr.net/npm/axios@1.19.0/dist/axios.min.js"></script> <script> // 建一个带 baseURL 的自定义实例,后续请求不用写全地址 const api = axios.create({ baseURL: 'https://api.example.com' }); // 请求拦截器:自动附加 Authorization 头 api.interceptors.request.use(function (config) { config.headers.Authorization = 'Bearer ' + (localStorage.getItem('token') || ''); return config; }); // 响应拦截器:401 统一跳登录,其他错误继续抛 api.interceptors.response.use( function (res) { return res; }, function (err) { if (err.response && err.response.status === 401) { location.href = '/login.html'; } return Promise.reject(err); } ); // 业务代码只管发请求 api.get('/me') .then(function (res) { console.log('当前用户:', res.data); }) .catch(function (err) { console.error('请求失败:', err.message); }); </script>

要点:用axios.create()隔离配置,业务方代码更干净;拦截器只写一次,全站生效。

30秒回顾

  • 一行引入:<script src="https://cdn.jsdelivr.net/npm/axios@1.19.0/dist/axios.min.js">,加载即用window.axios
  • unpkg 等价写法:https://unpkg.com/axios@1.19.0/dist/axios.min.js,面向国内优先选 jsDelivr
  • 别用 latest:锁版本 + SRI 校验 + 备用 CDN 兜底,三步把生产环境稳下来
  • CORS 报错找接口方加响应头;GET 数据旧就加时间戳参数绕缓存

【免费下载链接】axiosPromise based HTTP client for the browser and node.js项目地址: https://gitcode.com/GitHub_Trending/ax/axios

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询