Axios logo

Axios

基于 Promise 的 HTTP 客户端,同时支持浏览器和 Node.js,是 JavaScript 生态中使用最广泛的 HTTP 请求库之一。

精选工具HTTP请求API客户端Promise拦截器

Axios 是开源的基于 Promise 的 HTTP 客户端库,同时支持浏览器和 Node.js 环境,提供拦截器、自动 JSON 转换、请求取消、超时控制、进度监控等功能。npm 周下载量超 1 亿次,GitHub 约 108,600 Stars,是前端和全栈开发者最常用的 HTTP 客户端之一。

Axios

基于 Promise 的 HTTP 客户端,同时支持浏览器和 Node.js,是 JavaScript 生态中使用最广泛的 HTTP 请求库之一。

技术简介说明

Axios 是一个开源的、基于 Promise 的 HTTP 客户端库,可以在浏览器和 Node.js 环境中运行。它由 Matt Zabriskie 于 2014 年创建,至今已发展成为 npm 上周下载量超过 1 亿次的顶级 HTTP 客户端库。Axios 的核心价值在于提供了一套简洁、一致的 API 来处理 HTTP 请求,同时内置了大量开发者日常需要的功能——拦截器、自动 JSON 转换、请求/响应取消、超时控制、进度监控等。

Axios 的设计哲学是"开箱即用"。与原生 Fetch API 相比,它不需要手动处理响应体的解析(如 response.json()),不需要手动判断 HTTP 状态码(可配置自动抛出非 2xx 响应),不需要额外封装即可实现请求拦截、响应拦截、重试、取消等常见需求。这使得 Axios 在大型企业级项目和快速迭代的中小型项目中都有广泛应用。

在 Node.js 生态中,Axios 是许多框架和 SDK 的底层 HTTP 引擎,被 NestJS、Nuxt.js、Strapi 等知名项目集成使用。截至 2026 年,Axios 仍然是 npm 上下载量最高的 HTTP 客户端之一,拥有约 10.8 万 GitHub Stars,是前端和全栈开发者必须掌握的基础工具。

基本信息

属性说明
官网https://axios-http.com
GitHubhttps://github.com/axios/axios
LicenseMIT
最新版本v1.18.1(2026 年 6 月 21 日发布)
GitHub Stars~108,600+(2026 年 7 月)
npm 周下载量~1 亿+
主要维护者Jason Saayman(Lead Maintainer)、Jay、Dmitriy Mozgovoy(Core Contributor)
创建者Matt Zabriskie
支持环境浏览器(XHR / Fetch)、Node.js(http / fetch adapter)
包大小~35.6 KB(gzip: ~13.5 KB)
TypeScript内置类型定义(axios/index.d.ts

快速上手

安装

# npm
npm install axios
 
# yarn
yarn add axios
 
# pnpm
pnpm add axios
 
# CDN(浏览器直接使用)
<script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>

基础配置

import axios from 'axios'
 
// 创建自定义实例,配置默认值
const instance = axios.create({
  baseURL: 'https://api.example.com',
  timeout: 10000,
  headers: {
    'Content-Type': 'application/json',
  },
  // 自动将响应体解析为 JSON
  responseType: 'json',
  // 只有状态码在 2xx 范围内才不会触发错误
  validateStatus: (status) => status >= 200 && status < 300,
})
 
// 请求拦截器:在请求发送前统一处理
instance.interceptors.request.use(
  (config) => {
    // 自动附加 Token
    const token = localStorage.getItem('token')
    if (token) {
      config.headers.Authorization = `Bearer ${token}`
    }
    return config
  },
  (error) => Promise.reject(error)
)
 
// 响应拦截器:统一处理响应和错误
instance.interceptors.response.use(
  (response) => response.data,
  (error) => {
    if (error.response?.status === 401) {
      // 处理未授权
      window.location.href = '/login'
    }
    return Promise.reject(error)
  }
)

最小示例

import axios from 'axios'
 
// GET 请求
const { data } = await axios.get('https://api.example.com/users')
console.log(data)
 
// POST 请求
const result = await axios.post('https://api.example.com/users', {
  name: '张三',
  email: '[email protected]',
})
 
// 带参数的请求
const users = await axios.get('/users', {
  params: { role: 'admin', page: 1 },
})

核心概念与架构

Axios 的架构由以下几个核心部分组成:

┌─────────────────────────────────────────────┐
│                  Axios 实例                   │
├─────────────────────────────────────────────┤
│  请求拦截器链  →  Adapter  →  响应拦截器链      │
│  (Request     (HTTP/XHR    (Response         │
│   Interceptors) Adapter)    Interceptors)    │
├─────────────────────────────────────────────┤
│           核心功能层                           │
│  · Transformers(数据转换)                    │
│  · Defaults(默认配置)                       │
│  · CancelToken / AbortController(取消请求)   │
│  · Progress(进度事件)                       │
├─────────────────────────────────────────────┤
│           环境适配层                           │
│  · XHR Adapter(浏览器 XMLHttpRequest)       │
│  · Fetch Adapter(浏览器/Node.js Fetch API)  │
│  · HTTP Adapter(Node.js http/https 模块)    │
└─────────────────────────────────────────────┘

请求生命周期

  1. 配置合并:将实例默认配置、请求配置合并
  2. 请求拦截器:按添加的逆序(LIFO)依次执行
  3. 数据转换:请求前自动序列化请求体(默认支持 JSON、FormData、URLSearchParams)
  4. Adapter 发送请求:根据环境选择合适的适配器
  5. 数据转换:响应后自动反序列化响应体
  6. 响应拦截器:按添加的顺序(FIFO)依次执行
  7. 返回结果:返回包含 datastatusstatusTextheadersconfig 的响应对象

核心特性

1. 请求/响应拦截器

Axios 最强大的特性之一。可以在请求发送前和响应返回后统一处理,适用于 Token 注入、错误重试、日志记录、全局错误处理等场景。

// 请求拦截器
axios.interceptors.request.use((config) => {
  config.headers['X-Request-Time'] = Date.now()
  return config
})
 
// 响应拦截器
axios.interceptors.response.use(
  (response) => response,
  (error) => {
    // 全局错误处理
    return Promise.reject(error)
  }
)

2. 自动 JSON 转换

请求和响应默认自动进行 JSON 序列化/反序列化,无需手动调用 JSON.stringify()response.json()

3. 请求取消

支持通过 AbortController(推荐)和传统的 CancelToken 两种方式取消请求。

// AbortController(现代方式)
const controller = new AbortController()
axios.get('/api/data', { signal: controller.signal })
controller.abort() // 取消请求
 
// CancelToken(传统方式,已不推荐)
const source = axios.CancelToken.source()
axios.get('/api/data', { cancelToken: source.token })
source.cancel('请求已取消')

4. 上传/下载进度监控

在浏览器环境中支持监控上传和下载进度。

axios.post('/upload', formData, {
  onUploadProgress: (e) => {
    console.log(`上传进度: ${Math.round((e.loaded / e.total) * 100)}%`)
  },
  onDownloadProgress: (e) => {
    console.log(`下载进度: ${Math.round((e.loaded / e.total) * 100)}%`)
  },
})

5. 超时控制

axios.get('/api/slow', {
  timeout: 5000, // 5 秒超时
})

6. 并发请求

const [users, posts] = await axios.all([
  axios.get('/users'),
  axios.get('/posts'),
])
// 或使用 Promise.all
const results = await Promise.all([
  axios.get('/users'),
  axios.get('/posts'),
])

7. 多环境 Adapter

内置三种适配器:浏览器 XHR、Fetch API、Node.js HTTP。支持自定义 Adapter。

// 使用 Fetch Adapter(Axios 1.7+)
axios.get('/api/data', { adapter: 'fetch' })
 
// 使用 HTTP Adapter(Node.js)
axios.get('/api/data', { adapter: 'http' })
 
// 自定义 Adapter
axios.get('/api/data', {
  adapter: async (config) => {
    // 自定义请求逻辑
    return { data: {}, status: 200, statusText: 'OK', headers: {}, config }
  },
})

8. CSRF/XSRF 防护

内置 CSRF Token 自动携带机制。

axios.post('/api/action', data, {
  xsrfCookieName: 'csrftoken',
  xsrfHeaderName: 'X-CSRFToken',
  withCredentials: true,
})

9. 请求/响应数据转换

// 自定义请求转换
axios.post('/api', data, {
  transformRequest: [
    (data, headers) => {
      // 自定义序列化逻辑
      return JSON.stringify(data)
    },
    ...axios.defaults.transformRequest,
  ],
})

10. 最大内容长度限制

防止下载超大文件导致内存溢出。

axios.get('/api/large-file', {
  maxContentLength: 50 * 1024 * 1024, // 限制 50MB
  maxBodyLength: 50 * 1024 * 1024,
})

生态图

核心生态项目

项目说明地址
axios-cache-interceptor最流行的 Axios 缓存拦截器,减少重复请求GitHub
axios-mock-adapter请求拦截 Mock 工具,常用于测试GitHub
axios-retry自动重试失败的请求,支持指数退避npm
axios-logger请求/响应日志格式化输出npm
axios-extensions扩展工具集:缓存、节流、重试GitHub
axios-hooksReact Hooks 封装npm

框架集成

框架集成方式
Vue.js官方推荐通过 provide/inject 或 Vue 实例挂载使用
React配合 useEffect / 自定义 Hook 使用
NestJS@nestjs/axios 模块封装
Nuxt.js@nuxt/httpnuxt-axios 模块(Nuxt 3 已移除 Axios 作为默认)
Next.jsgetServerSideProps / API Route 中使用

工具链

  • axios-cookiejar-support:Node.js 环境下支持 Cookie Jar
  • axios-https-proxy-fix:HTTPS 代理支持
  • axios-debug-log:调试日志输出
  • axios-curlirize:将 Axios 请求转换为 cURL 命令,方便调试

适用场景

1. 企业级中后台系统

Axios 的拦截器机制非常适合中后台系统的全局鉴权、错误处理和请求日志需求。配合 Token 自动刷新、请求重试、Loading 状态管理等,可以快速搭建完善的请求层。

2. 需要统一请求/响应处理的项目

当多个页面、多个模块需要统一处理请求头、响应格式、错误码时,Axios 的实例 + 拦截器模式是最成熟的选择。

3. 需要请求取消的场景

文件上传、搜索建议(防抖取消)、页面切换取消未完成请求等场景,Axios 的 AbortController 集成非常便捷。

4. 文件上传/下载

Axios 内置进度事件监控(onUploadProgress / onDownloadProgress),适合需要显示上传/下载进度的场景。

5. Node.js SSR / BFF 层

在 Next.js、Nuxt.js 等服务端渲染框架中,Axios 可以同时服务客户端和服务端请求,配合 Adapter 切换实现同构 HTTP 调用。

6. API Mock 与测试

配合 axios-mock-adapter,可以方便地在单元测试和开发环境中拦截和模拟 API 响应,无需修改业务代码。

7. 需要重试机制的 API 调用

配合 axios-retry 或在拦截器中实现重试逻辑,在网络不稳定或 API 偶发失败时自动重试,提高请求成功率。

开发与工程化

TypeScript 支持

Axios 内置完整的 TypeScript 类型定义,支持泛型推导响应数据类型:

interface User {
  id: number
  name: string
  email: string
}
 
// 泛型指定响应数据类型
const response = await axios.get<User>('/api/users/1')
const user: User = response.data
 
// 自定义请求配置类型
interface ApiConfig {
  showLoading?: boolean
  showError?: boolean
}
 
// 扩展 AxiosRequestConfig
declare module 'axios' {
  interface AxiosRequestConfig {
    showLoading?: boolean
    showError?: boolean
  }
}

构建工具集成

// Vite - 无需额外配置,直接 import
import axios from 'axios'
 
// Webpack - 同上,直接 import
// Axios 会自动根据环境选择 Adapter
 
// 如需 Tree-shaking,使用具名导入
import { get, post } from 'axios' // 注意:Axios 默认导出,tree-shaking 效果有限

环境变量配置

// .env
VITE_API_BASE_URL=https://api.example.com
VITE_API_TIMEOUT=10000
 
// src/api/index.ts
const api = axios.create({
  baseURL: import.meta.env.VITE_API_BASE_URL,
  timeout: Number(import.meta.env.VITE_API_TIMEOUT),
})

请求层封装模式

// src/api/request.ts - 统一请求层
import axios, { type AxiosRequestConfig, type AxiosResponse } from 'axios'
 
const request = axios.create({
  baseURL: import.meta.env.VITE_API_BASE_URL,
  timeout: 15000,
})
 
// 请求拦截器
request.interceptors.request.use((config) => {
  // Token、Loading、日志等
  return config
})
 
// 响应拦截器
request.interceptors.response.use(
  (response: AxiosResponse) => {
    // 统一解包响应数据
    return response.data
  },
  (error) => {
    // 统一错误处理
    const status = error.response?.status
    const messages: Record<number, string> = {
      400: '请求参数错误',
      401: '未授权,请重新登录',
      403: '拒绝访问',
      404: '请求资源不存在',
      500: '服务器内部错误',
    }
    const message = messages[status] || `请求失败 (${status || '网络错误'})`
    console.error(message)
    return Promise.reject(error)
  }
)
 
// 导出封装后的方法
export const get = <T = any>(url: string, config?: AxiosRequestConfig) =>
  request.get<any, T>(url, config)
 
export const post = <T = any>(url: string, data?: any, config?: AxiosRequestConfig) =>
  request.post<any, T>(url, data, config)
 
export default request

性能与安全

性能考量

维度说明
包大小~35.6 KB(gzip: ~13.5 KB),相比 Fetch API(0 KB)有额外开销
请求性能与原生 Fetch 基本一致(浏览器环境下底层使用 XHR/Fetch)
Tree-shaking默认导出,tree-shaking 效果有限;但整体体积不大
内存占用拦截器链和转换函数会增加少量内存开销
连接复用Node.js 环境下支持 HTTP Keep-Alive,但需要手动配置 httpAgent / httpsAgent

安全注意事项

⚠️ 2026 年供应链攻击事件

2026 年 3 月 30-31 日,Axios npm 包遭受重大供应链攻击。Google Threat Intelligence 将攻击归因于与朝鲜(North Korea)关联的威胁行为者。攻击者通过社交工程手段获取了维护者的 npm 账号权限,发布了包含恶意代码的版本(v1.14.1 和 v0.30.4)。恶意版本引入了隐藏依赖 [email protected],会投递跨平台 RAT(远程访问木马)。美国 CISA(网络安全与基础设施安全局)于 2026 年 4 月 20 日发布了官方安全公告。

应对措施

  • 确保使用 v1.15.0 及以上的安全版本
  • 检查 package-lock.json / pnpm-lock.yaml 中是否有可疑依赖
  • 使用 npm auditpnpm audit 检查项目安全状态
  • 启用 npm 的 2FA 保护维护者账号

已知 CVE

CVE 编号说明影响版本修复版本
CVE-2025-58754data: URI 内存耗尽 DoS 攻击< 1.11.01.11.0+
CVE-2026-40175关键安全漏洞(详见安全公告)特定版本已修复
CVE-2026-44486Proxy-Authorization 头在跨域重定向时泄漏< 1.18.01.18.0+

通用安全建议

  1. 敏感头信息保护:v1.18.0+ 会自动在跨域重定向时剥离敏感头(如 AuthorizationCookie
  2. 原型污染防护:v1.16.0+ 加强了配置读取时对原型链污染的防护
  3. URL 校验:v1.18.0+ 增加了畸形 URL 的拒绝机制
  4. 依赖锁定:始终使用 lock 文件锁定依赖版本,避免自动升级到恶意版本

技术对比

Axios vs Fetch API vs ky vs Got

特性AxiosFetch APIkyGot
环境浏览器 + Node.js浏览器 + Node.js 18+浏览器(基于 Fetch)仅 Node.js
包大小~35.6 KB (gzip 13.5 KB)0 KB(原生)~5 KB (gzip 2 KB)~50 KB
HTTP/2不支持(浏览器环境)浏览器决定浏览器决定✅ 原生支持
请求拦截器✅ 内置❌ 需手动封装✅ beforeRequest hooks✅ beforeRequest hooks
响应拦截器✅ 内置❌ 需手动封装✅ afterResponse hooks✅ 无直接等价物
自动 JSON✅ 请求/响应均自动❌ 响应需手动 .json()✅ 自动✅ 自动
超时控制timeout 选项❌ 需用 AbortControllertimeout 选项timeout 选项
请求取消✅ AbortController + CancelToken✅ AbortController✅ AbortController✅ AbortController
上传进度onUploadProgress❌ 需用 XHR 或 Fetch + 手动计算
下载进度onDownloadProgress❌ 需用 ReadableStream 手动计算
重试机制❌ 需 axios-retry❌ 需手动封装✅ 内置✅ 内置
错误抛出✅ 非 2xx 自动抛出❌ 需手动检查 response.ok✅ 非 2xx 自动抛出✅ 非 2xx 自动抛出
CSRF 防护✅ 内置❌ 需手动处理
FormData✅ 自动序列化✅ 原生支持✅ 自动✅ 自动
Cookie 控制withCredentialscredentials 选项credentials 选项✅ 内置 cookie jar
代理支持✅ Node.js 环境支持❌ 有限✅ 原生支持
缓存❌ 需 axios-cache-interceptor❌ 需手动封装❌ 需手动✅ 内置缓存策略
HTTP/3浏览器决定浏览器决定
下载量(周)~1 亿+原生 API~1.7 万~1.5 万

选择建议

场景推荐原因
传统企业项目 / 已有 Axios 依赖Axios生态成熟、拦截器强大、迁移成本高
新项目 / 包大小敏感Fetch API零依赖、原生支持、现代浏览器全覆盖
需要轻量 Fetch 增强ky5KB 体积、内置重试、现代 API 设计
Node.js 服务端 / 微服务GotHTTP/2 支持、内置缓存、重试、分页等
Next.js App Router / RSCFetch API与 React 缓存机制兼容、零运行时开销

最佳实践

1. 使用实例而非全局 Axios

// ❌ 不推荐:污染全局配置
axios.defaults.baseURL = 'https://api.example.com'
 
// ✅ 推荐:创建独立实例
const api = axios.create({ baseURL: 'https://api.example.com' })

2. 统一错误处理

// 在响应拦截器中集中处理所有错误
instance.interceptors.response.use(null, (error) => {
  if (axios.isCancel(error)) {
    console.log('请求已取消')
    return Promise.reject(error)
  }
 
  const status = error.response?.status
  switch (status) {
    case 401:
      // 跳转登录
      break
    case 403:
      // 提示无权限
      break
    case 429:
      // 限流处理
      break
    default:
      // 通用错误提示
      break
  }
  return Promise.reject(error)
})

3. Token 自动刷新

let isRefreshing = false
let pendingRequests: Array<(token: string) => void> = []
 
instance.interceptors.response.use(null, async (error) => {
  if (error.response?.status === 401 && !error.config._retry) {
    if (isRefreshing) {
      // 等待 Token 刷新完成
      return new Promise((resolve) => {
        pendingRequests.push((token) => {
          error.config.headers.Authorization = `Bearer ${token}`
          resolve(instance(error.config))
        })
      })
    }
 
    error.config._retry = true
    isRefreshing = true
 
    try {
      const { data } = await axios.post('/auth/refresh', {
        refreshToken: localStorage.getItem('refreshToken'),
      })
      const newToken = data.token
      localStorage.setItem('token', newToken)
 
      // 重试所有等待的请求
      pendingRequests.forEach((cb) => cb(newToken))
      pendingRequests = []
 
      error.config.headers.Authorization = `Bearer ${newToken}`
      return instance(error.config)
    } finally {
      isRefreshing = false
    }
  }
  return Promise.reject(error)
})

4. 请求去重

const pendingRequests = new Map<string, AbortController>()
 
instance.interceptors.request.use((config) => {
  // 生成请求唯一标识
  const key = `${config.method}:${config.url}:${JSON.stringify(config.params)}`
 
  // 取消之前的相同请求
  if (pendingRequests.has(key)) {
    pendingRequests.get(key)!.abort()
  }
 
  const controller = new AbortController()
  config.signal = controller.signal
  pendingRequests.set(key, controller)
 
  return config
})
 
instance.interceptors.response.use((response) => {
  // 请求完成后移除
  const key = `${response.config.method}:${response.config.url}:${JSON.stringify(response.config.params)}`
  pendingRequests.delete(key)
  return response
})

5. 安全的版本管理

# 使用精确版本或范围锁定
# package.json
{
  "dependencies": {
    "axios": "~1.18.0"   # 只允许 patch 更新
  }
}
 
# 定期运行安全审计
npm audit
# 或
pnpm audit

技术局限与边界

1. 包体积

Axios 的 gzip 体积约 13.5 KB,对于追求极致性能的项目来说仍然偏大。如果只需要简单的 GET/POST 请求,原生 Fetch API 是更好的选择。

2. 无法 Tree-shaking

Axios 使用默认导出(export default axios),所有方法挂载在同一个对象上,导致无法有效 tree-shake。即使只使用 axios.get(),也会打包整个库。

3. 不支持 HTTP/2(浏览器环境)

浏览器环境下 Axios 基于 XHR 或 Fetch,HTTP 协议版本由浏览器决定,无法直接控制。在 Node.js 环境下,HTTP Adapter 基于 http/https 模块,不支持 HTTP/2(需要使用 http2 模块或第三方方案)。

4. 非标准 Fetch 特性缺失

某些 Fetch API 独有的特性(如 ReadableStream 响应体、Request/Response 对象直接操作)在 Axios 中需要通过 Adapter 或自定义转换实现。

5. 维护者风险

2026 年 3 月的供应链攻击事件暴露了 Axios 高度依赖单一维护者的风险。维护团队规模较小,npm 发布权限集中,这对大型项目的安全性构成隐患。

6. React Server Components 兼容性

在 Next.js App Router 的 Server Components 中,Axios 不被推荐作为数据获取工具。RSC 环境下推荐使用原生 Fetch API,因为 Fetch 请求可以被 React 自动缓存和去重。

7. 取消请求的局限性

传统的 CancelToken 已被标记为废弃,推荐使用 AbortController。但在某些旧版浏览器环境中,AbortController 的兼容性仍需考虑。

8. 错误类型不统一

Axios 的错误对象结构在不同场景(网络错误、超时、HTTP 状态码错误、取消请求)下格式不一致,需要额外判断处理。

学习资源

官方文档

教程与文章

视频教程

安全相关

社区讨论

2026 年现状

版本状态

截至 2026 年 7 月,Axios 的最新稳定版本为 v1.18.1(2026 年 6 月 21 日发布)。v1.x 系列是当前的主要维护线,v0.x 系列仅做安全补丁维护。

2025-2026 版本演进时间线

时间版本关键变更
2025.02v1.8.0新增 ignoreAbsoluteURLs 配置,规范 FormData/Blob 支持
2025.04v1.9.0Axios 构造函数 config 参数改为可选,修复 Fetch content-length 计算
2025.06v1.10.0fetchOptions 透传至 Fetch 函数,FormData 布尔值转字符串
2025.07v1.11.0🔒 修复 CVE-2025-58754(data: URI 内存耗尽 DoS)
2026.03⚠️ 供应链攻击事件:v1.14.1 和 v0.30.4 被植入恶意代码
2026.04v1.15.x供应链攻击后安全修复版本
2026.05v1.16.x原型污染防护、HTTPS 数据泄漏修复
2026.06v1.17.0新增 zstd 解压缩支持、配置原型污染防护
2026.06v1.18.0跨域重定向敏感头剥离、畸形 URL 拒绝
2026.06v1.18.1修复 AxiosError 循环 JSON 序列化、Node HTTP Adapter 代理修复

维护状态与社区

  • GitHub Stars:约 108,600+,仍然是 GitHub 上 Stars 最多的 JavaScript HTTP 客户端
  • npm 周下载量:超过 1 亿次,是最受欢迎的 npm 包之一
  • 维护团队:以 Jason Saayman 为核心的小型团队,供应链攻击事件后社区对维护者集中度的关注增加
  • 活跃 Issue:GitHub 上仍有大量 open issues,社区活跃度保持较高水平

供应链攻击的影响

2026 年 3 月的供应链攻击事件是 Axios 历史上最严重的安全事件。攻击者通过社交工程获取维护者 npm 账号权限,发布了携带 RAT 木马的恶意版本。该事件导致了以下影响:

  1. 信任危机:部分开发者和项目开始考虑迁移到 Fetch API 或其他替代方案
  2. 安全加固:Axios 团队采用了 staged publishing(分阶段发布)机制,加强了 npm 账号安全
  3. 生态警醒:推动了 npm 生态系统对维护者账号安全、2FA 强制启用的讨论

未来展望

  • Fetch Adapter 成熟化:Axios 持续完善 Fetch Adapter,逐步统一浏览器和 Node.js 环境的底层实现
  • 安全强化:经历供应链攻击后,安全机制持续加强(敏感头保护、原型污染防护、URL 校验等)
  • TypeScript 改进:类型定义持续优化,泛型支持更加完善
  • Node.js 新版本适配:持续适配 Node.js 新版本(已支持 Node.js 26 测试矩阵)
  • 竞争压力:原生 Fetch API 的普及对 Axios 形成持续压力,特别是在新项目和 Next.js/RSC 场景中

总结建议

场景建议
已有 Axios 依赖的项目升级到 v1.18.1+,启用 lock 文件,定期审计
新项目(非 RSC)可考虑 Fetch API 或 ky,减少依赖;如需拦截器等高级功能,Axios 仍是可靠选择
Next.js App Router / RSC优先使用原生 Fetch API
Node.js 微服务考虑 Got(HTTP/2 支持)或原生 Fetch API
对包大小敏感的场景选择 ky(~2 KB gzip)或原生 Fetch API(0 KB)

文档更新时间:2026 年 7 月 7 日
基于 Axios v1.18.1
数据来源:GitHub、npm、HeroDevs、Microsoft Security Blog、Axios 官方文档