You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

axios能否将自定义URL Scheme设为baseURL?如何解决双斜杠替换问题

问题根源

axios拼接URL时会调用运行环境内置的标准URL解析逻辑,而浏览器、Node.js等环境的URL实现仅会将http、https、ftp等内置的层级型协议识别为合法层级scheme,自定义scheme会被判定为非层级协议,自动移除协议名后的双斜杠,最终得到my-custom-scheme:/some-other/endpoint的错误地址。

最优解决方案

直接绕开axios内置的URL拼接逻辑,通过请求拦截器手动拼接自定义scheme地址,该方案不依赖axios内部实现,全版本兼容,代码如下:

const axiosInstance = axios.create({
  // 不要在baseURL字段传入自定义scheme,避免触发内置URL解析逻辑
  baseURL: ''
})

// 请求拦截器中手动拼接完整目标地址
axiosInstance.interceptors.request.use(config => {
  const CUSTOM_SCHEME = 'my-custom-scheme://'
  // 统一规整路径开头的斜杠,避免出现斜杠重复或缺失
  const path = config.url.startsWith('/') ? config.url.slice(1) : config.url
  config.url = `${CUSTOM_SCHEME}${path}`
  return config
})

// 正常调用即可,最终请求地址符合预期:my-custom-scheme://some-other/endpoint
axiosInstance({
  method: 'GET', // 注意原示例代码中写的methods是参数笔误,正确参数为单数method
  url: '/some-other/endpoint'
})
不推荐的方案说明
  • 不要通过改写axios内部combineURLs方法、在baseURL中加特殊占位符再替换的方式实现:这类方案强依赖axios的内部源码逻辑,axios版本迭代后很容易失效。
  • 宿主环境注册自定义scheme的方案仅适用于Electron、App内嵌WebView等可控环境,通用性差,不适合通用业务场景使用。

内容的提问来源于stack exchange,提问作者zetdotcom

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 23:06:23