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

如何使用Axios发起POST请求时不对URL中的保留字符进行URL编码

Axios 保留URL中单引号不编码的实现方案

可以通过Axios或同类请求库实现需求,无需完全依赖原生HTTPS模块,以下是具体实现方案:

方案1:使用Axios内置的urlSerializer配置(推荐,Axios v0.25.0+支持)

Axios提供了自定义URL序列化的配置项,可直接调整编码规则,跳过单引号的编码处理,示例代码如下:

const response = await axios.post("https://foo.bar/Company('ACME')", body, {
  headers: {
    Authorization: this.authHeader,
    'Content-Type': 'application/json'
  },
  // 自定义URL序列化逻辑,将编码后的%27替换回单引号
  urlSerializer: (urlObj) => {
    const origin = `${urlObj.protocol}//${urlObj.host}`
    const path = urlObj.pathname.replace(/%27/g, "'")
    const search = urlObj.search ? `?${urlObj.searchParams.toString()}` : ''
    return `${origin}${path}${search}`
  }
})

方案2:低版本Axios兼容方案

如果使用的Axios版本不支持urlSerializer,可以直接用同类请求库fetch实现,fetch默认不会强制编码URL中的单引号,直接传入原始路径即可:

const response = await fetch("https://foo.bar/Company('ACME')", {
  method: 'POST',
  headers: {
    'Authorization': this.authHeader,
    'Content-Type': 'application/json'
  },
  body: JSON.stringify(body)
})
const result = await response.json()

以上两种方案都可以保留URL中Company('ACME')的原始格式,不会将单引号编码为%27,符合目标服务的请求要求。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 18:27:03