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

React Native iOS端Fetch API仅URL分号未编码问题

解决React Native Fetch API中URL分号未编码的问题

问题分析

你在React Native iOS端使用Fetch API发起请求时,URL中的分号(;)未被自动编码,手动编码又会触发Fetch二次编码(把%转为%25),导致服务器无法识别正确参数。这是因为Fetch默认将分号视为URL查询参数的合法分隔符,不会对其编码,但你的服务器要求必须把分号转为%3B。

可行解决方案

用URL对象搭配URLSearchParams构造请求URL,这种方式会自动按规范编码所有需要转义的字符(包括分号),且不会被Fetch二次编码。

代码示例

// 初始化基础URL
const baseUrl = new URL('https://example.testing.com/');

// 设置查询参数,URLSearchParams自动编码特殊字符
baseUrl.searchParams.set('filterString', 'product.code><CODE01;CODE02');

// 转换为最终请求URL
const url = baseUrl.toString();

// 发起请求
const response = await fetch(url, { method, headers });

// 验证编码结果
const responseURL = response.url;
console.log('displayUrl: ' + responseURL);

执行后生成的URL会符合服务器要求:

https://example.testing.com/?filterString=product.code%3E%3CCODE01%3BCODE02

方案有效性说明

URLSearchParams会严格遵循URL编码规范处理参数值,将分号、大于号、小于号等特殊字符全部转为对应编码格式,Fetch识别到这是合法的编码URL后,不会再进行二次编码。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 16:32:16