Axios v1.x 版本演进全解析:基于 CHANGELOG 读懂安全加固、功能迭代与适配器演进(v1.0.0 → v1.19.0)
【免费下载链接】axiosPromise based HTTP client for the browser and node.js项目地址: https://gitcode.com/GitHub_Trending/ax/axios
本文以仓库内的 CHANGELOG.md 为骨架,系统梳理 Axios(面向浏览器与 Node.js 的 Promise 风格 HTTP 客户端)从 v1.0.0(2022-10-04)到 v1.19.0(2026-07-22)的完整版本记录,重点解读其中的安全修复脉络、新功能演进、适配器与多运行时支持,以及升级前必须关注的行为变更。每一条关键改动都会对照lib/下的实际源码进行交叉印证,帮助你在选型、升级或排查回归问题时,快速定位版本间的安全边界差异与行为变化。
一、版本脉络总览:从 v1.0.0 到 v1.19.0
CHANGELOG 当前记录的最新版本为 v1.19.0。这一版本与仓库 package.json 中声明的"version": "1.19.0"保持一致,也说明本仓库快照对应 1.19.0 发布后的代码状态。整条 v1.x 时间线可以划分为三个阶段:
- 初始发布期(1.0.0 ~ 1.3.x,2022-10 ~ 2023-04):1.x 大版本落地,补齐
toFormData、formToJSON、自定义paramsSerializer、Node.js data URL 支持等基础能力。 - 安全与功能密集迭代期(1.4.0 ~ 1.13.x,2023-04 ~ 2026-01):引入 fetch 适配器、HTTP/2、
allowAbsoluteUrls等里程碑功能,同时密集处理 CSRF、ReDoS、SSRF、原型污染等安全漏洞。 - 安全加固与多运行时支持期(1.14.0 ~ 1.19.0,2026-02 ~ 2026-07):全面转向供应链加固、CRLF/原型污染纵深防御、
allowedSocketPathsSSRF 白名单,并正式支持 Deno、Bun 运行时。
下表汇总了各版本的核心主题(完整逐条记录见 CHANGELOG.md):
| 版本 | 日期 | 核心主题 |
|---|---|---|
| 1.0.0 | 2022-10-04 | 1.x 大版本:toFormData、formToJSON、paramsSerializer、data URL、AxiosError增强 |
| 1.1.0 ~ 1.1.3 | 2022-10 | CommonJS/UMD 导出修复、clear()拦截器、自定义paramsSerializer |
| 1.2.0 ~ 1.2.6 | 2022-11 ~ 2023-01 | 模块导出重构、AxiosHeaders改进、AxiosError.toJSON防循环引用 |
| 1.3.0 ~ 1.3.6 | 2023-01 ~ 2023-04 | 规范符合的 FormData/Blob 支持、自定义lookup函数、AxiosHeaderValue导出 |
| 1.4.0 | 2023-04-27 | 自定义lookup函数(DNS)、mergeConfig性能优化 |
| 1.5.0 ~ 1.5.1 | 2023-08 ~ 2023-09 | 导出getAdapter、无unsafe前缀导出适配器 |
| 1.6.0 ~ 1.6.8 | 2023-10 ~ 2024-03 | CVE-2023-45857(CSRF/XSRF)、withXSRFToken、ReDoS 修复 |
| 1.7.0-beta.0 ~ 1.7.0 | 2024-04 ~ 2024-05 | fetch 适配器落地 |
| 1.7.1 ~ 1.7.9 | 2024-05 ~ 2024-12 | CVE-2024-39338(SSRF)、fetch/XHR 细节修复 |
| 1.8.0 ~ 1.8.4 | 2025-02 ~ 2025-03 | allowAbsoluteUrls配置(BREAKING) |
| 1.9.0 | 2025-04-24 | AxiosHeaders.getSetCookie() |
| 1.10.0 ~ 1.12.0 | 2025-06 ~ 2025-09 | fetchenv配置变量、JSON.parsereviver、底层错误经cause暴露 |
| 1.13.0 ~ 1.13.6 | 2025-10 ~ 2026-02 | HTTP/2 支持、useLegacyInterceptorOrder、isAbsoluteURL校验、React Native Blob |
| 1.14.0 | 2026-03-27 | 测试套件迁移 Vitest、formidable升级 v3、CommonJS 兼容修复 |
| 1.15.0 | 2026-04-07 | CRLF 头注入防护、shouldBypassProxy(SSRF)、Deno/Bun 官方支持、CI 供应链加固 |
| 1.15.1 | 2026-04-19 | 头注入、withXSRFToken真值绕过、maxBodyLength(零重定向)修复 |
| 1.15.2 | 2026-04-21 | allowedSocketPathsSSRF 白名单、keep-alive 连接池内存泄漏修复 |
| 1.16.0 ~ 1.16.1 | 2026-05 | QUERY 方法、ECONNREFUSED常量、fetch 适配器强制maxBodyLength/maxContentLength |
| 1.17.0 | 2026-06-01 | Node HTTP zstd 解压、transitional.advertiseZstdAcceptEncoding |
| 1.18.0 | 2026-06-13 | transitional.validateStatusUndefinedResolves、跨域重定向敏感头剥离、ERR_INVALID_URL |
| 1.19.0 | 2026-07-22 | form-data 版本下限提升、AxiosHeaders.parseParameters()、Cloudflare 520 状态码、NO_PROXY 匹配加固 |
说明:版本号遵循语义化版本(SemVer)原则,
1.x主版本内只引入向后兼容的功能与修复;破坏性变更(如allowAbsoluteUrls)会在 CHANGELOG 中单独以BREAKING CHANGES标注。关于版本策略的完整约定可参阅仓库文档 semver.md,跨版本迁移注意事项见 MIGRATION_GUIDE.md。
二、安全修复演进线(重点)
安全修复是 CHANGELOG 中最密集、也最值得逐条阅读的线索。v1.x 的安全加固呈现出明显的“纵深防御”趋势:从最初修复单点漏洞(CSRF、ReDoS),逐步演进到对配置读取、请求体/响应体限制、头注入、SSRF、原型污染的全面加固。以下按时间线梳理,并对照源码印证。
2.1 早期漏洞:CSRF、ReDoS 与原型污染
- v1.6.0(CVE-2023-45857):修复了一个 CSRF 漏洞,其本质是
withXSRFToken/凭证相关路径在非标准环境下可能泄露 XSRF token。该修复在 CHANGELOG 中以 “⚠️ Critical vulnerability fix” 标注。 - v1.6.3(ReDoS,#6132):修复了正则表达式拒绝服务漏洞,与后续版本中对
parseProtocol、参数解析等正则的收紧一脉相承。 - v1.6.4(原型污染,#6167):修复
formToJSON原型污染漏洞。当前源码 lib/helpers/formDataToJSON.js 第 81 行保留了显式防护:在buildPath中遇到name === '__proto__'时直接return true跳过,确保污染键无法通过反序列化写入对象原型。
// lib/helpers/formDataToJSON.js(节选) function buildPath(path, value, target, index) { // ... let name = path[index++]; if (name === '__proto__') return true; // 第 81 行:原型污染防护 // ... }2.2 SSRF 与协议校验
- v1.7.4(CVE-2024-39338,#6539):拒绝协议相对 URL(
//host/...),修复 SSRF。这一约束直接体现在当前的协议解析逻辑中。lib/helpers/parseProtocol.js 的正则要求协议分隔符必须带冒号:
// lib/helpers/parseProtocol.js export default function parseProtocol(url) { const match = /^([-+\w]{1,25}):(?:\/\/)?/.exec(url); return (match && match[1]) || ''; }- v1.18.0(#11000):进一步收紧——对于省略
//的畸形http:/https:URL,直接抛出ERR_INVALID_URL。这一逻辑位于 lib/core/buildFullPath.js,第 8 行的malformedHttpProtocol = /^https?:(?!\/\/)/i配合第 45–56 行的assertValidHttpProtocolURL完成校验。
2.3 头注入与 CRLF 防御
- v1.15.0(CRLF 头注入,#10660):拒绝任何包含
\r或\n的头值,阻断可用于窃取云元数据(IMDS)的 CRLF 注入链。行为变更:含 CR/LF 的头现在会抛出"Invalid character in header content"。 - v1.15.1(#10749、#10758):收紧请求头构造的校验与清洗,并在 multipart 头值中正确剥离 CR/LF,防止通过字段名/文件名注入。
- v1.15.1(
withXSRFToken真值绕过,#10762):对任何“真值但非布尔”的配置短路,避免歧义配置导致 XSRF token 跨源静默泄露。
2.4 请求体/响应体限制与maxBodyLength
- v1.15.1(#10753、#10754):即使在
maxRedirects: 0时也强制maxBodyLength,并对流式响应应用maxContentLength,封堵超大请求体绕过路径。 - v1.16.0(#10795):fetch 适配器开始强制执行
maxBodyLength与maxContentLength——在 1.16.0 之前这两个限制在 fetch 适配器上被静默忽略。这是一项可观察行为变更,依赖其作为 DoS 防护的旧代码需要重新评估(详见第五节)。
2.5 SSRF 白名单:shouldBypassProxy与allowedSocketPaths
- v1.15.0(#10661):引入
shouldBypassProxy辅助函数,在评估no_proxy/NO_PROXY规则前规范化主机名(去除尾部点、处理括号 IPv6),堵住回环/内网主机被意外代理的缺口。 - v1.15.2(#10777):新增
allowedSocketPaths配置选项,用于限制 Node HTTP 适配器允许的 Unix domain socket 路径,从而缓解通过socketPath的 SSRF;不匹配时返回AxiosError的ERR_BAD_OPTION_VALUE。该白名单校验位于 lib/adapters/http.js 第 957–961 行附近。
// lib/adapters/http.js(节选) const allowedSocketPaths = own('allowedSocketPaths'); if (allowedSocketPaths != null) { const allowed = Array.isArray(allowedSocketPaths) ? allowedSocketPaths : [allowedSocketPaths]; // ... 对 socketPath 做白名单校验,不匹配则抛 ERR_BAD_OPTION_VALUE }- v1.19.0(NO_PROXY 匹配加固,#11029、#11053):在 NO_PROXY 匹配时规范化 IPv4 的简写/八进制/十六进制形式,并支持逗号或空格分隔列表中的
*条目。这一复杂度直接体现在 lib/helpers/shouldBypassProxy.js:normalizeIPAddress(第 61 行起)负责把127.1、1.2.3、八进制、0x十六进制等形态还原为点分十进制;shouldBypassProxy(第 438 行起)在第 453–455 行处理noProxy === '*'的整体绕过,并对每个条目做 CIDR、后缀、端口与回环判定。
2.6 原型污染纵深防御
- v1.13.5(#7369):加固
mergeConfig,忽略__proto__、constructor、prototype键,防止合并用户配置时的原型污染拒绝服务。 - v1.15.2(#10779):Node HTTP 适配器及
resolveConfig/mergeConfig/validator 路径只读取自有属性并使用 null 原型配置对象,防止被污染的auth、baseURL、socketPath、beforeRedirect、insecureHTTPParser影响请求。 - v1.16.1(#7413):
formDataToJSON通过只遍历自有属性,防御已被污染的Object.prototype。 - v1.17.0(#10901、#10922):用自有属性检查保护
socketPath、params、paramsSerializer的读取,阻断继承原型值影响请求行为(含 SSRF 敏感路径)。
2.7 供应链与发布安全
- v1.15.2(#10776):新增
.npmrc(ignore-scripts=true)、lockfile lint CI、可复现构建 diff、范围化 CODEOWNERS,扩展 SECURITY.md 与 THREATMODEL.md(含npm audit signatures溯源验证、60 天解决策略与事件响应手册)。 - v1.15.0(#10618 等):CI 安全加固——引入 zizmor Actions 安全扫描、npm 发布切换 OIDC Trusted Publishing(移除长期
NODE_AUTH_TOKEN)、所有 action 引用固定到完整 commit SHA、工作流权限最小化、发布步骤置于独立npm-publish环境、禁止 fork 运行 sponsor 工作流。 - v1.17.0(#10926):发布工作流切换 npm staged publishing,更安全、可审计、带 provenance。
- v1.19.0(#11083):简化 v1 发布,改用 Node.js 26 自带的 npm。
2.8 最新依赖漏洞:form-data CRLF 注入(v1.19.0)
- v1.19.0(#11028):将
form-data依赖版本下限提升到^4.0.6,避免新安装解析到受 CRLF 注入漏洞影响的版本。这一点在当前 package.json 的依赖中可直接验证:"form-data": "^4.0.6",与 CHANGELOG 描述一致。
三、新功能与能力演进线
除安全外,CHANGELOG 记录了若干改变使用方式的里程碑功能。以下按主题梳理并对照源码。
3.1 fetch 适配器(v1.7.0,里程碑)
- v1.7.0-beta.0(2024-04-28)→ v1.7.0(2024-05-19,#6371):正式引入 fetch 适配器,成为 Node 环境下的第三适配层。
- 后续版本围绕 fetch 适配器做了大量打磨:
- v1.7.0-beta.1(#6380):将 fetch 相关
TypeError归类为AxiosError.ERR_NETWORK; - v1.7.6(#6524):修正 FormData 载荷的
Content-Length计算;(#6582)优化信号组合逻辑; - v1.7.7(#6584):Safari 流处理回退到流读取器;
- v1.7.5(#6533):Cloudflare Workers 凭证处理;
- v1.12.0(#7003):为 fetch 适配器新增
fetch/Request/Response的env配置变量;(#6982)将底层网络错误细节通过cause暴露; - v1.16.0(#10795、#10772、#10806):强制
maxBodyLength/maxContentLength、User-Agent与 HTTP 适配器对齐、保留原始 abort 原因。
- v1.7.0-beta.1(#6380):将 fetch 相关
3.2 配置与请求控制
- v1.1.3(#5113):支持自定义
paramsSerializer。 - v1.4.0(#5339):支持自定义
lookup函数(DNS 解析可插拔)。 - v1.5.0(#5324、#5839):导出
getAdapter,并以无unsafe前缀导出适配器。 - v1.6.2(#6046):新增
withXSRFToken选项,作为恢复旧版withCredentials行为的替代方案(需与withCredentials配合使用)。 - v1.8.0(#5902、#6192):新增忽略绝对 URL 的配置
allowAbsoluteUrls,这是一项BREAKING CHANGE——此前依赖“请求 URL 优先于合并”的代码,现在会改为合并 URL。该逻辑位于 lib/core/buildFullPath.js 第 68–76 行(allowAbsoluteUrls === false时强制走combineURLs)。 - v1.9.0(#5707):
AxiosHeaders新增getSetCookie()方法。 - v1.13.5(#7326):
isAbsoluteURL增加输入校验,优雅处理畸形/意外输入。
3.3 HTTP/2 与压缩
- v1.13.0(#7150):Node HTTP 适配器新增 HTTP/2 支持;会话池逻辑在v1.17.0(#10861)被抽取为独立辅助模块 lib/helpers/Http2Sessions.js(
sessionTimeout默认 1000ms),并补充会话池、超时、清理行为的单元测试。 - v1.13.3(#7256):HTTPS 连接默认使用 443 端口。
- v1.17.0(#6792、#10920):Node HTTP 适配器支持 zstd 响应解压,由
transitional.advertiseZstdAcceptEncoding控制是否在Accept-Encoding中声明zstd。源码印证:lib/defaults/transitional.js 第 8 行advertiseZstdAcceptEncoding: false;lib/adapters/http.js 第 49 行定义zstdOptions、第 57 行拼接ACCEPT_ENCODING_WITH_ZSTD、第 1190 行对zstd内容编码分支调用zlib.createZstdDecompress。
3.4 类型与序列化增强
- v1.12.0(#5926):
JSON.parse支持 reviver;(#7003)fetchenv配置变量。 - v1.16.0(#10802、#10680、#6897):
- 支持 QUERY HTTP 方法(跨适配器与类型定义);
AxiosError暴露ECONNREFUSED常量,便于按常量而非字符串匹配“连接被拒绝”——见 lib/core/AxiosError.js 第 208 行;- 从
buildURL导出内部encode辅助函数,便于用户自定义参数序列化器复用 axios 的编码逻辑。
- v1.17.0(#10952、#10956):修正
AxiosHeaders.toJSON()返回类型,并将 CommonJSisCancel类型收窄到CanceledError<T>。 - v1.18.0(#10899):新增
transitional.validateStatusUndefinedResolves,让应用可选择把validateStatus: undefined当作“未提供该选项”处理;而validateStatus: null仍是“接受所有状态”的显式方式。源码印证:lib/defaults/transitional.js 第 9 行validateStatusUndefinedResolves: true,index.d.ts 第 305–306 行声明两个transitional字段。 - v1.19.0(#11043、#11081、#11051、#11067):
- 让
mergeConfig保留自有可枚举的 symbol 键字段,并在公开 TypeScript 声明、响应、错误、适配器与序列化器中引入通用params类型; - 新增可选的
AxiosHeaders.parseParameters()解析器(引号感知、RFC 风格 HTTP 参数解析),同时保留旧的解析行为——见 lib/core/AxiosHeaders.js 第 414–415 行static parseParameters; - 补上缺失的 Cloudflare
520 WebServerReturnsAnUnknownError状态码及对应 ESM/CJS 声明——见 lib/helpers/HttpStatusCode.js 第 73 行。
- 让
3.5 错误与序列化健壮性
- v1.19.0(#11044、#11059):在 JSON 兼容快照中将
Set值序列化为数组;并为原本为空的AggregateError合成有用的AxiosError消息。源码印证:lib/core/AxiosError.js 第 83–96 行aggregateErrorMessage,在AxiosError.from(第 99–131 行)中当error.message为空且存在error.errors时调用,从而避免双栈/Happy-Eyeballs 连接失败时出现空白消息。 - v1.19.0(#11008、#11038):畸形协议错误中带上“规范化、安全脱敏”的出错 URL,并在拼接 base URL 时去除重复的尾斜杠。源码印证:lib/core/buildFullPath.js 第 18–43 行
redactSensitiveURLParts(用 lib/core/AxiosError.js 第 6 行导出的REDACTED标记替换 userinfo、查询值、fragment),第 50 行将脱敏 URL 嵌入ERR_INVALID_URL消息。 - v1.19.0(#11035):组合中止信号时,立即传播“已中止”的输入信号。源码印证:lib/helpers/composeSignals.js 第 53–56 行,遍历信号时若
signal.aborted为真则直接onabort,而非等待后续abort事件。 - v1.19.0(#11061):修正 base64
data:URL 的大小估算,使maxContentLength在 HTTP 与 Fetch 适配器间一致执行。源码印证:lib/helpers/estimateDataURLDecodedBytes.js 同时导出estimateDataURLDecodedBytes(面向 Fetch,第 148 行)与estimateDataURLBufferAllocation(面向 NodeBuffer.from,第 164 行),分别对应两种解码路径的真实字节占用。
四、适配器与多运行时支持演进
Axios 通过适配层抹平环境差异:Node 使用http适配器,浏览器使用xhr/fetch,并逐步扩展到 Deno、Bun、React Native。
4.1 三大适配器
http(Node):lib/adapters/http.jsxhr(浏览器):lib/adapters/xhr.jsfetch(v1.7.0+):lib/adapters/fetch.js
适配器的加载与按名导出在 v1.2.0(#5277 “allowing adapters to be loaded by name”)、v1.5.0(导出getAdapter)逐步成型。
4.2 Nodehttp适配器的关键修复
- v1.13.1(#7193):修复非 OK 状态响应时数据流被中断的回归。
- v1.13.2(#7206):修复 keep-alive 请求在带超时时的
socket hang up;(#7202)提前退出循环的性能改进。 - v1.15.2(#10788):修复 keep-alive 连接池内存泄漏——为每个 socket 安装单一
error监听器,通过kAxiosSocketListener/kAxiosCurrentReq追踪活跃请求,消除按请求累积监听器导致的MaxListenersExceededWarning与线性堆增长。 - v1.17.0(#10957):通过 HTTP CONNECT 代理隧穿 HTTPS 请求时,保留用户
httpsAgent的 TLS 选项。
4.3 XHR / 浏览器细节
- v1.16.0(#10787):在 error、timeout、abort 路径上退订
cancelToken与AbortSignal监听器,防止订阅泄漏。 - v1.16.1(#10868):防止某些环境在 XHR 上传时输出的畸形
ProgressEvent(缺失/非法loaded/total)导致崩溃。 - v1.16.1(#10864):修复 fetch 适配器中 Webpack 4 无法解析的语法,恢复旧版打包器兼容性。
4.4 Deno、Bun 与 React Native 支持
- v1.13.3(#5754):为
package.json增加bun导出条件,让 Bun 加载 Node.js 构建而非浏览器构建。当前 package.json 的exports中同时存在bun、react-native、browser、default条件,印证了这一演进。 - v1.15.0(#10652):为 Deno 与 Bun 增加完整 smoke 测试套件,并在每次发版前于 CI 中运行两种运行时。仓库中对应目录为 tests/smoke/deno 与 tests/smoke/bun;package.json 的 scripts 提供
test:smoke:deno(deno task ...)与test:smoke:bun(bun test --cwd tests/smoke/bun)。 - v1.13.6(#5764):在 React Native 环境正确处理原生
Blob对象。 - v1.13.6(#7386):修复 React Native / Browserify 的模块导出问题。
适用前提:Deno/Bun 的官方支持(smoke 套件 + CI 前置校验)自 v1.15.0 起;
bun导出条件自 v1.13.3 起。低版本运行时的行为可能不一致,升级前建议在目标运行时跑一次 smoke 测试。
五、升级前必须关注的行为变更
CHANGELOG 中有一批“可观察行为变更”,直接决定升级是否安全。建议升级时按下表逐项核对:
| 版本 | 变更 | 影响与建议 |
|---|---|---|
| 1.7.4 | 拒绝协议相对 URL(SSRF,#6539) | 依赖//host/...形式请求的代码会失效,需改为完整协议 URL |
| 1.8.0 | allowAbsoluteUrls(BREAKING,#6192) | 默认改为合并 base 与请求 URL;如需旧行为需显式配置 |
| 1.13.5 | 拦截器执行顺序变化 | 依赖 v1.13 之前顺序的应用可启用useLegacyInterceptorOrder回退 |
| 1.15.0 | 含 CR/LF 的头值抛错 | 旧代码若向头中注入换行会由“静默”变为“抛异常” |
| 1.16.0 | fetch 适配器强制maxBodyLength/maxContentLength | 之前被忽略的体积上限现在真正生效,超大请求/下载可能开始报错 |
| 1.16.0 | 代理路径保留用户Host头(#10822) | 虚拟主机式代理路由行为改变 |
| 1.16.0 | URL 内嵌 Basic auth 凭据改为 URL 解码(#10825) | 形如https://user:p%40ss@host现在按解码值上网 |
| 1.16.0 | unescape()替换为现代 UTF-8 编码(#7378) | 非 ASCII URL 处理回归规范,依赖旧unescape怪癖的输出字节可能不同 |
| 1.18.0 | 畸形http:/https:URL 抛ERR_INVALID_URL(#11000) | 省略//的 URL 不再被宽松解析 |
| 1.19.0 | 同步请求拦截器失败后不再派发请求(#11071) | 除非配对的 rejection 处理成功,否则请求不再发出 |
| 1.19.0 | 负进度值钳制为 0(#11039) | 进度回调不再出现负值 |
以v1.16.0为例,CHANGELOG 明确提示 fetch 适配器的maxBodyLength/maxContentLength此前被静默忽略;把 axios 从 1.15.x 升到 1.16.0 的团队,若之前依赖“无体积限制”的默认,需重新评估下载/上传上限,否则可能出现新的ERR_BAD_RESPONSE/体积相关错误。
六、工程化与发布流程演进
CHANGELOG 的 “Maintenance & Chores” 部分记录了工程链路的演进,对理解仓库的构建与测试布局很有帮助:
- v1.2.2:引入 conventional-changelog 自动化与 GitHub Actions 发布脚本(#5384、#5397 等),奠定自动发布基础。
- v1.14.0(#7484 等):测试套件整体迁移到 Vitest、ESLint 升级 v10、Rollup 升级、Husky 9、TypeScript 升级、Express 测试脚手架现代化。当前 package.json 的
test指向vitest run,并提供test:vitest:unit、test:vitest:browser等分项,印证迁移完成。 - v1.15.0:CI 供应链安全加固(OIDC 发布、SHA 固定、权限最小化),见第 2.7 节。
- v1.17.0(#10939):通过
files白名单并去掉不需要的未压缩 source map,降低发布包体积。当前 package.json 的files字段即为白名单形式。 - v1.19.0(#11054):仅对发布的压缩 bundle 生成 source map,从非压缩构建中移除失效的 map 引用。
运行/查看方式(均为只读说明,不修改仓库):
- 单元测试:
npm run test:vitest(或分项test:vitest:unit/test:vitest:browser)- Deno smoke:
npm run test:smoke:deno- Bun smoke:
npm run test:smoke:bun- 构建:
npm run build
七、如何高效阅读 CHANGELOG 并定位源码
结合本仓库,建议按以下方式把 CHANGELOG 条目落到可验证的代码位置:
- 确认当前版本:先读 package.json 的
version字段,对齐 CHANGELOG 顶部版本(当前为 1.19.0)。 - 安全条目:在 CHANGELOG 的
🔒 Security Fixes小节按版本检索 CVE/PR 号,再对照源码印证——例如shouldBypassProxy见 lib/helpers/shouldBypassProxy.js,原型污染防护见 lib/helpers/formDataToJSON.js、lib/core/mergeConfig.js,SSRF 白名单见 lib/adapters/http.js。 - 功能条目:
🚀 New Features小节的配置项通常落在 lib/defaults/transitional.js(transitional 开关)与 index.d.ts(类型声明),行为实现落在对应适配器(lib/adapters/*)或核心(lib/core/*)。 - 修复条目:
🐛 Bug Fixes按模块名(http/fetch/xhr/headers/types)定位到对应文件,必要时再查tests/下同名测试用例佐证。 - 版本语义与迁移:配合 semver.md 理解版本约定,配合 MIGRATION_GUIDE.md 处理跨版本迁移,配合 SECURITY.md 与 THREATMODEL.md 理解安全边界与披露策略。
小结:Axios 的 v1.x 演进是一条“功能落地 → 安全纵深加固 → 多运行时支持”的清晰主线。从 1.0.0 的基础能力,到 1.6.0/1.7.4 的 CSRF 与 SSRF 修复,再到 1.15.x 的 CRLF/原型污染防御与allowedSocketPaths白名单,直至 1.19.0 的 form-data 版本下限提升与 NO_PROXY 匹配加固,每一步都能在lib/源码中找到对应实现。对使用者而言,读懂这份 CHANGELOG 的价值在于:升级前能预判安全边界与行为变更(尤其 1.16.0 的 fetch 体积上限、1.8.0 的allowAbsoluteUrls),并能把每条变更精确映射到源码与测试,从而做出有依据的升级决策。
【免费下载链接】axiosPromise based HTTP client for the browser and node.js项目地址: https://gitcode.com/GitHub_Trending/ax/axios
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考