参考链接: https://blog.csdn.net/xude1985/article/details/52268533
字符被替换成了十六进制的转义序列
escape: ASCII 字母和数字 * @ - _ + . /
encodeURI: ASCII 字母和数字 - _ . ! ~ * ' ( ) ;/?:@&=+$,#
encodeURIComponent: ASCII 字母和数字 - _ . ! ~ * ' ( )
URI:统一资源标志符(Uniform Resource Identifier)
URL:统一资源定位符(uniform resource location)
locators are also identifiers, so every URL is also a URI, but there are URIs which are not URLs.
Url编码的原则就是使用安全的字符(没有特殊用途或者特殊意义的可打印字符)去表示那些不安全的字符。
在这些可书写的字符里,由于一些字符在不同操作系统的编码有不同的解析,被包含在“不安全字符”之中。
正确编码
禁止对URI中的保留字作编码,比如&字符。
如果url参数值带有保留字符,encode之。
潜在的语义攻击风险
总结:
这三个方法,当url保留字符不是用作保留字符的时候,需要encode。
URL编码需要遵守的原则:
不要对Unreserved Characters做percent encode编码。
除了保留字符和非保留字符外的所有字符,必须使用percent encode进行编码。
保留字符不用于URI分隔符,而是用于其它位置,比如query部分的value时,要对这时用到的保留字符做percent encode编码。