参数值含=必须转义为%3D,因HTTP协议中=是键值分隔符;URL query和x-www-form-urlencoded需手动或脚本编码,JSON则无需转义。

Postman 里参数值含 = 时,直接填进 URL query 或 x-www-form-urlencoded 会导致解析错乱——服务器只取到等号前的部分,或整个参数被截断。根本原因不是 Postman 本身有问题,而是 HTTP 协议规定 & 和 = 是表单编码的分隔符,必须转义才能当普通字符传。
为什么 = 必须转义?
URL 查询字符串和 x-www-form-urlencoded 都依赖 = 分隔键与值、& 分隔多个键值对。比如:
?name=alice&token=abc=def&role=admin
服务器会把 token=abc=def 解析成键 token、值 abc,后面那个 =def&role=admin 就变成非法结构,轻则参数丢失,重则 400 错误。
所以,只要参数值里有 =,就必须替换成 %3D(URL 编码值),让协议层把它当成纯数据,而不是语法符号。
三种常见场景下的处理方式
1. URL query 参数含 =
- 手动转义:右键选中参数值 → Encode URI Component,Postman 会自动把
=变成%3D - 脚本自动转义(推荐):在 Pre-request Script 里用
encodeURIComponent()const rawVal = "abc=def"; pm.request.url.query.update("token", encodeURIComponent(rawVal));2.
x-www-form-urlencoded中的 value 含=
Postman 12.27.7下载Postman 12.27.7 Windows x64 官方安装包,适用于 API 设计、调试、测试与协作。该系列包含 Enterprise 云端性能测试静态 IP 出口能力,以及接口规范标签管理改进,适合受限网络测试与规范资源组织场景。
- 不能靠右键菜单——这个 tab 不支持一键编码
- 必须手动把值改成
abc%3Ddef,否则提交后会被截断 - 如果值来自变量(如
{{auth_token}}),确保该变量本身已是编码后的结果
3. 请求体是 JSON,但某个字段值含
=(如 base64 字符串)- 不需要额外转义——JSON 的字符串内容不参与 URL 解析,
=是合法字符 - 只要
Content-Type正确设为application/json,直接填"token": "YXNkZj1hc2Rm"即可 - 注意:别误把 JSON 放进
x-www-form-urlencoded,否则=又会触发解析问题
容易忽略的坑
很多同学试过
encodeURI(),但它不会编码=(只编码空格、中文、/、?等),必须用encodeURIComponent()——后者才对所有非 URI-safe 字符做完整转义。另一个常见错误:在 Pre-request Script 里改了参数,但没删掉原始参数项,导致同一 key 出现两次,后端取到的是第一个或最后一个,行为不可控。务必用
.remove()再.add(),或直接用.update()。最后提醒:如果后端用的是 Spring Boot,默认的
StringHttpMessageConverter能自动 decode%3D,但某些老框架或自定义解析器可能跳过这步,得确认后端是否做了URLDecoder.decode()。










