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


image.png

Post提交的数据也需要进行转义吗?

要看请求的Content-Type,如果Content-Typeapplication/x-www-form-urlencoded(form 默认),那么是需要和get请求一样转义的。如果是multipart/form-data(文件上传用此type),数据之间用的就是--boundary分隔符,也就不需要进行转义了。

参考

四种常见的 POST 提交数据方式
should i encode post data?