阅读口径
本文保留原字符串;操作在副本上进行,候选结果需由来源证据核对。
百分号表示字节
地址中 % 后接两位十六进制数是字节的表示方式。解释文字时还要按相应规则把字节解码;百分号形式长,并不表示文字损坏。
规范参考:WHATWG:URL Standard。操作场景与排查建议为本站说明。
只解码应处理的组件
路径、查询参数和完整 URL 有不同结构。不要对整个 URL 反复解码,尤其不要把编码后的分隔符无条件变成真正分隔符;应交给相应 URL 解析器。
观察是否重复编码
演示场景:一次编码产生 %,再次编码使它变成 %25。页面看到 %25 只是一条排查线索,要比较发送端构造参数和接收端解析结果,不能一律解码两遍。
可执行检查单
- 01保留原地址文本,不直接覆盖。
- 02使用 URL 解析器拆分组件。
- 03比较参数编码前与解析后的值。
一个常见问题
地址栏看起来不同代表内容不同吗?
不一定,浏览器可能对部分字符显示解码形式;应比较解析出的参数值与实际请求组件。
本页结论
URL 的结构与文本值要分别验证,避免修文字时改变链接含义。