为什么要urlencode?

前言

测试中很多时候会遇到url的请求,url的拼接等场景,在测试这些场景,尤其是需要给url传参时,一定要保证输入的url或者url参数是encode模式,为什么要这样呢?

1.信息可读性

当字符串数据以url的形式传递给web服务器时,字符串中如果含有空格,可能会造成信息获取失败;此外还有一些特殊字符,如邮箱参数中的@符等,需要encode之后以符合url的规范。

2.信息完整性

url的保留字符&是特别需要注意的,因为很多时候,url里的某些参数是另外一个url,如果不encode就会造成参数获取不完整,比如下列url:https://www.website1.com?arg1=1&arg2=2&url_ext=www.website2.com?ext_agr1=1&ext_arg2=2,如果不进行urlencode,其中的ext_arg2参数你认为是域website1的参数呢,还是域website2的参数呢,所以需要逐层做urlencode,使用时再逐层解码,以确定参数所属的主域。

综上,一般哪些字符需要转化呢?

**
**

1、ASCII的控制字符

ASCII表上的数字0–31分配给了控制字符,用于控制像打印机等一些外围设备。例如,12代表换页/新页功能,指示打印机跳到下一页的开头。这些字符是不可打印的,自然需要转化。

2、一些非ASCII字符

比如中文,阿拉伯字符等。

3、一些保留字符

比如最常见的连接符“&”。

4、 一些不安全的字符

比如空格,为了防止引起歧义,需要转化成“+”。


结束语:

以上就是我们对urlencod场景做的总结,俗话说,细节决定成败,测试中有许多诸如此类的技术细节需要我们关注,欢迎大家一起来补充奥~




Qtest是360旗下的专业测试团队!

是WEB平台部测试技术平台化、效率化的先锋力量!