encodeURI('http://username:password@www.example.com:80/path/to/file.php?foo=31&6&bar=this+has+spaces#anchor')
// http://username:password@www.example.com:80/path/to/file.php?
foo=31&6&bar=this+has+spaces#anchor
encodeURIComponent('31&6')
// 31%266
encodeURI只会对保留字符、非转义字符、#之外的字符进行转移,encodeURIComponent就会对保留字符、#进行转义。常见请求用encodeURICompinent
Post提交的数据也需要进行转义吗?
要看请求的Content-Type
,如果Content-Type
为application/x-www-form-urlencoded
(form 默认),那么是需要和get请求一样转义的。如果是multipart/form-data
(文件上传用此type),数据之间用的就是--boundary
分隔符,也就不需要进行转义了。