在开发中遇到javascript从后台获取的url 会被转义,如:http://localhost:8080/Home/Index?a=14&b=15&c=123,想把它转成http://localhost:8080/Home/Index?a=14&b=15&c=123

网上找了半天的解决方案:

转义分为escapeHTML和unescapeHTML,先看两个函数的实现。

js代码:

 1 /**
 2  * @function escapeHTML 转义html脚本 < > & " '
 3  * @param a -
 4  *            字符串
 5  */
 6 escapeHTML: function(a){
 7     a = "" + a;
 8     return a.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;").replace(/'/g, "&apos;");;
 9 },
10 /**
11  * @function unescapeHTML 还原html脚本 < > & " '
12  * @param a -
13  *            字符串
14  */
15 unescapeHTML: function(a){
16     a = "" + a;
17     return a.replace(/&lt;/g, "<").replace(/&gt;/g, ">").replace(/&amp;/g, "&").replace(/&quot;/g, '"').replace(/&apos;/g, "'");
18 },

1,escapeHTML将< > & " '转成字符实体 
使用场景: 
(1)用户在页面中录入(比如输入框) <script>alert(2);</script>, js将该内容提交给后端保存 
(2)显示时,后端将字符串返回前端;js接收到之后: 
a, 使用escapeHTML,将字符串转为 &lt;script&gt;alert(2);&lt;/script&gt;此时,浏览器将能正确解析,因为浏览器接收到实体字符后,转成对应的尖括号等。 
b, 不使用escapeHTML,浏览器一看到<,便认为是html标签的开始,直接把刚才的字符串当脚本执行了,这就是xss漏洞。

2,unescapeHTML将字符实体转成< > & " ' 
使用场景: 
后端将已经转义后的内容显示到页面;比如&lt;script&gt;alert(2);&lt;/script&gt; 
js收到后: 
a,前端进行unescapeHTML,则可以直接dom操作,将标签显示到页面。 
b,前端没有unescapeHTML,则原样输出<script>alert(2);</script>,但此时并没有执行。

转义字符: 

提示:使用实体名而不是数字的好处是,名称易于记忆。不过坏处是,浏览器也许并不支持所有实体名称(对实体数字的支持却很好)。

转载于:https://www.cnblogs.com/LiuLiangXuan/p/5212155.html

【转义字符】HTML 字符实体lt; gt: amp;等相关推荐

  1. HTML字符实体(Character Entities),转义字符串(Escape Sequence)

    为什么要用转义字符串? HTML中<,>,&等有特殊含义(<,>,用于链接签,&用于转义),不能直接使用.这些符号是不显示在我们最终看到的网页里的,那如果我们希 ...

  2. iOS HTML标签字符实体,转译字符串归类大全 【转载】

    为什么要用转义字符串? HTML中<,>,&等有特殊含义(<,>,用于链接签,&用于转义),不能直接使用.这些符号是不显示在我们最终看到的网页里的,那如果我们希 ...

  3. html字段值换行代码怎么写,HTML段落,换行,字符实体

    HTML段落,换行,字符实体 html段落 标签定义一个文本段落,一个段落含有默认的上下间距,段落之间会用这种默认间距隔开,代码如下: 段落 HTML是 HyperText Mark-up Langu ...

  4. HTML字符实体,转义字符串

    为什么要用转义字符串? HTML中**<,>,&等有特殊含义(<,>,用于链接签,&用于转义),**不能直接使用.这些符号是不显示在我们最终看到的网页里的,那如 ...

  5. web前端入门到实战:HTML字符实体,转义字符串

    为什么要用转义字符串? HTML中**<,>,&等有特殊含义(<,>,用于链接签,&用于转义),**不能直接使用.这些符号是不显示在我们最终看到的网页里的,那如 ...

  6. 02 【字符实体与语义标签(上)】

    2.字符实体与语义标签上 2.1字符实体 有些时候,在HTML中不能直接书写一些特殊符号,如: 多个连续的空格(在网页中编写的多个空格默认情况会自动被浏览器解析为一个空格) 比如字母两侧的大于小于号( ...

  7. 前端入门基础之字符实体与语义标签

    文章目录 字符实体与语义标签 1. 字符实体 2. meta 标签 3. 语义标签 4. 块元素与行内元素 块元素(block element) 行内元素(inline element) 5. 内容修 ...

  8. XML中CDATA及其字符实体的使用

    在写xml文档时,偶尔会用到一些特殊字符,如<.>.&等,如下面这段程序: <?xml version="1.0"?> <y>if x& ...

  9. 黄聪:百度知道中对HTML字符实体、字符编号,开头字符的使用

    http://www.w3school.com.cn/tags/html_ref_entities.html 带有实体名称的 ASCII 实体 结果 描述 实体名称 实体编号 " quota ...

最新文章

  1. SVN中trunk、branch、tag区别
  2. linux c获得时间和设置时间
  3. float、double(浮点数)区别还有和decimal(定点数)的比较
  4. Linux:常用命令大全
  5. [BZOJ1222/Luogu2224][HNOI2001]产品加工
  6. [LeetCode]题解(python):058-Length of Last Word
  7. 简单易变的CSS阴影效果
  8. 研发协同平台持续集成实践
  9. 线程与并发基础-青铜
  10. phpcms 报500错误
  11. Python查看本机所有联网应用程序信息
  12. 哥尼斯堡的“七桥问题” (25 分)(DFS)
  13. 军用软件开发周期和文档
  14. 数据标注软件labelme详解
  15. Magento compare products ajax
  16. 小程序破解WIFI密码,亲测有效
  17. 反欺诈之路——黑卡、养卡的识别
  18. python最简单的图形编程_图形化编程、Python、Java、C++到底哪个适合你?
  19. html字体设置大小打印无效,css font-size属性怎么不管用?
  20. 基于QT实现的多媒体播放器

热门文章

  1. linux修改用户名、密码、用户组、设备名教程
  2. 必备数据可视化神器,这功能太强大了!
  3. 九九乘法表练习_Excel乘法表练习工作簿
  4. VScode配置Anaconda
  5. 关于无创DNA检测的真实性
  6. Android 判断是否有录音权限
  7. html圆圈中打钩代码,CSS3点击按钮圆形进度打钩效果的实现代码
  8. 正确利用JS赋值表达式返回值
  9. 三元组矩阵的基本操作——加、减、矩阵乘、转置
  10. 11.15-判断一个数是否为质数