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

React中使用Fetch发DELETE请求URL特殊字符被自动编码如何解决?

问题原因

浏览器发起请求时会自动对URL路径中的保留字符{、}做URL编码:{会被编码为%7B、}会被编码为%7D,因此路径中原有的%{[@timestamp]}片段会被转义为%%7B[@timestamp]%7D,和预期路径格式不符。
之前使用decodeURI无效的核心原因是:原生fetch接收到字符串类型的URL参数时,会自动做一次URL编码处理,提前用decodeURI处理原始路径完全不会生效。

修复方案

先通过URL对象拿到编码后的完整地址,手动替换转义片段后再发起请求即可,代码示例:

const rawPath = '/api/apiname/name-%{[@timestamp]}-1970.01.01';
// 基于当前域名构造临时URL对象,得到默认编码后的完整地址
const tempUrl = new URL(rawPath, window.location.origin);
// 替换转义片段为需要的格式
const finalUrl = tempUrl.href.replaceAll('%%7B', '%{').replaceAll('%7D', '}');

fetch(finalUrl, {
    method: 'delete',
    headers: {
        'Content-Type': 'application/json;charset=utf-8',
        Authorization: `Bearer ${Token}`
    }
})

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 18:39:02