url编解码异常

今天和app调试一个接口,接口做了防护措施,在数据解码之后发现好多异常数据,我把数据打印到日志之后发现数据里面多了很多空格,仔细对比源数据之后发现我这边把“+”号,urldecode成了空格。仔细翻了下php的函数,把urldecode换成rawurldecode,就好了。

仔细看了一下php相关的url编解码函数,一共有四个

string urlencode ( string str)  / string urlencode ( string str) 
返回的是字符串,此字符串中除了 -_. 之外的所有非字母数字字符都将被替换成百分号(%)后跟两位十六进制数,空格则编码为加号(+)。此编码与 WWW 表单 POST 数据的编码方式是一样的,同时与 application/x-www-form-urlencoded 的媒体类型编码方式一样

string rawurldecode ( string str) ,与第一个相同,只不过 空格编码成了 ‘%20’

string rawurldecode ( string str) 与 urldecode 相同 不过不会解析 “+”

前端的url 编码函数:

escape 和 unescape 对除ASCII字母、数字、标点符号 @  *  _  +  –  .  / 以外的其他字符进行编码

encodeURI 和 decodeURI 返回编码为有效的统一资源标识符 (URI) 的字符串,不会被编码的字符:! @ # $ & * ( ) = : / ; ? + ‘ ,encodeURI()是Javascript中真正用来对URL编码的函数

encodeURIComponent 和 decodeURIComponent 不会编码的字符 字母数字._-

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注