JS URL 编码问题 求助

2016-01-05 22:16:43 +08:00
 jonzlx
JS 针对 URL 链接有两个编码方法, encodeURI 和 encodeURIComponent 。
网上解释:
encodeURI 对完整 URL 进行编码时使用;保留了; / ? : @ & = + $
encodeURIComponent 对 URL 参数编码时使用,之后进行 URL 拼接。

有个疑问,如果 encodeURI 对 URL 编码,就已经可以使 URL 安全合法。那为什么还会有 encodeURIComponent 方法?
先拼接 URL ,之后全部使用 encodeURI 编码,比每个参数先使用 encodeURIComponent 再拼接应该更简单。

是否有什么特殊情况没有考虑?
1888 次点击
所在节点    问与答
2 条回复
YuJianrong
2016-01-05 22:51:02 +08:00
解释的已经很清楚了吧……
举例来说你的 url 是
domain/doAction?value=name&option=3
这种样子,然后 name 带着一些特殊字符比如 a&b=x 这样, encodeURI 对拼装好的结果编码结果是
domain/doAction?value=a&b=x&option=3
这样显然是有问题的,用 encodeURIComponent 先编码 name 的话就是
domain/doAction?value=a%26b%3Dx&option=3
这样后台处理就不会出问题了。
jonzlx
2016-01-06 07:50:24 +08:00
@YuJianrong 哦, 明白了, 也就是 encodeURI 处理的 URL 连接并不一定是有效的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://tanronggui.xyz/t/248614

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX