为什么要 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 场景做的总结,俗话说,细节决定成败,测试中有许多诸如此类的技术细节需要我们关注,欢迎大家一起来补充奥~
评论