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

Postman GET请求传%参数绕过正则校验返回正常响应问题

问题原因

不是Postman主动删除了参数中的%字符,该异常是URL百分号编码规则导致的:

  • 按照URL传输规范,%是专门的转义标识字符,不能直接作为参数值裸传,必须编码为%25才能被识别为字面量的%符号。
  • 你传入的连续%%%%%%%属于非法百分号编码序列(合法的%转义要求%后必须跟2位十六进制字符),Postman内置的HTTP请求引擎、后端Web容器在解析URL参数时,会自动忽略无法正常解码的非法转义片段,最终后端拿到的unitCode参数值就是空字符串。
  • 你配置的校验正则^[a-zA-Z0-9]{0,2}$本身允许长度为0的空字符串通过校验,因此没有触发400 Bad Request拦截,最终返回了正常响应。
验证方式

可以通过两个简单测试快速确认逻辑:

  • 将参数值替换为合法编码后的%25%25%25再发起请求,后端会接收到字面量%%%,此时会因为参数长度超限、包含非字母数字字符,正常触发400拦截。
  • 临时把正则调整为^[a-zA-Z0-9]{1,2}$(将参数最小长度限制从0改为1),再传入原始的%%%%%%%参数,会因为后端拿到空值不符合规则,直接返回400错误。
修复方案
  • 调整参数校验规则:如果业务上unitCode不允许为空,直接把正则的长度下限改为要求的最小长度,从规则层面堵上空值绕过校验的入口。
  • 兼容空值场景:如果业务确实允许unitCode传空,需要额外增加校验逻辑,识别原始请求中unitCode参数后存在非法编码序列的场景,直接返回参数格式错误。
  • 规范Postman传参方式:需要传包含%在内的特殊字符时,不要直接把参数拼到URL地址栏,填写到Postman的Params面板的键值对输入区域,Postman会自动完成合规的URL编码,避免出现非法转义序列解析异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 18:48:28