encodeURIComponent

脑袋决定嘴巴,言语的核心指向腹中的酝酿,表述当然存在复杂性,但是只要主谓宾合理就坐再配上不是太糟糕的理解能力,语义便能达到不丢包的传达。

下面来自W3School的描述:

“encodeURIComponent() 把字符串作为 URI 组件进行编码。”(完全无缝不留痕复制粘贴)

鄙人鄙陋的分析:函数名明确指出是对Uri进行编码,但是它画风一砖甩到了“字符串”上(好,我承认URI也是String,但是老子可以有很多儿子,儿子不会有很多老子,出来混说URI就URI),甩到String头上我就不说了,后面又来句像uri那样编码,这一砖拍的我一脸的茫然,让我想起了一个段子:

师:“高分微积方程有哪方面的运用”
甲:“老师,它有物理学方面的运用”
师:“这位同学答的不错”
乙:“你不是学文的吗!你怎么知道”
甲:“这是常识”
乙:....(一脸懵懂)


鄙人鄙陋的再解释(如此贬低自己是谦虚的极端,这样不好,年轻气盛才是年轻人):

encodeURIComponent()对URI进行编码,不是所有char都被编码,只是有些char会被编码成十六进制的转义序列


不会对 ASCII 字母和数字进行编码,也不会对这些 ASCII 标点符号进行编码: - _ . ! ~ * ' ( ) 。

其他字符(比如 :;/?:@&=+$,# 这些用于分隔 URI 组件的标点符号),都是由一个或多个十六进制的转义序列替换的。


important here :对String进行编码,该方法指定的char会被编码

大家又会问为什么这样做,稍安勿躁,待我复制粘贴:


sName=encodeURIComponent(sName);
var url="reg_te2.shtml?type="+mUserType+"&id="+vID+"&name="+sName;

保证数据传输的准确性以及防止Url注入带来的跨站点攻击
如果你不这样做 如果mUserType的值被恶意修改成:3&id=12&name=123#
你的程序就会被注入了 很可能带来安全性问题
如果你调用这个方法 上述mUserType会被进行编码成另外一种Unicode编码的格式 从而可以避免这种攻击
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值