URL 中,查询字符串与HTML实体冲突,可能带来的问题.
此问题相关信息(我不放在最前面,似乎有些朋友会找不到的样子.)
我们来看demo :
<a href="http://www.baidu.com?a=1®=2®_a=3" >悲剧</a>
var fixURL = function (url) {return url.replace(/&/g,'&');
};
//使用fixURL 去替换url中的&.然后再输出给html, 或者跳转链接,又或者弹窗... 当然,前端的同学在js代码中之所以要这样做.主要是受IE的拖累...
var checkURL = function () {var list = [ //106'Á','á','Â','â','´','Æ','æ','À','à','&','&','Å','å','Ã','ã','Ä','ä','¦','Ç','ç','¸','¢','©','©','¤','°','÷','É','é','Ê','ê','È','è','Ð','ð','Ë','ë','½','¼','¾','>','>','Í','í','Î','î','¡','Ì','ì','¿','Ï','ï','«','<','<','¯','µ','·',' ','¬','Ñ','ñ','Ó','ó','Ô','ô','Ò','ò','ª','º','Ø','ø','Õ','õ','Ö','ö','¶','±','£','"','"','»','®','®','§','­','¹','²','³','ß','Þ','þ','×','Ú','ú','Û','û','Ù','ù','¨','Ü','ü','Ý','ý','¥','ÿ'];return function (url) {var l = list;var i = l.length;var matchIndex;var current;var nextchar;var errors = [];for (; i--;){matchIndex = url.indexOf(l[i]);current = l[i];if(matchIndex > -1){if((current === '&' || current === '&') && url.charAt(matchIndex + 4) === ';'){//如果是 & 或 & 我们就认为是故意要输出 & ,比如是一个调用fixURL方法修正过的URL.里面的& 会被我们替换为 amp;//所以,我们要跳过它,去检查后面.continue;}nextchar = url.charAt(matchIndex + current.length);if(!/[a-zA-Z0-9]/.test(nextchar)){//此处我们只要发现任意一个 ,如 ®后面紧随字符不在 a-z,A-Z,0-9范围内.就算有问题.//这样处理实际和标准的细节以及浏览器实现有细微差异. 但是本着任何浏览器来跑case,都能发现潜在威胁的原则.和实现复杂度的考虑.// 我们姑且粗暴的这样处理了. 似乎还不错.errors.push(current + nextchar);}}}if(errors.length){throw Error('contains : \n' + errors.join('\n'));}};
}();
var url = '//www.baidu.com?a=1&=2<=3®=4'; document.onclick = function () { //IE9-好了.证明我们的修正是ok的了.window.open(fixURL(url))};
var url = '//www.baidu.com?a=1&=2<=3®=4'; try{checkURL(url);}catch(e){alert(e.message)}
转载于:https://www.cnblogs.com/_franky/archive/2012/09/28/2706512.html
URL 中,查询字符串与HTML实体冲突,可能带来的问题.相关推荐
- 如何用js获取浏览器URL中查询字符串的参数
首先要知道Location这个对象以及这个对象中的一些属性: href:设置或返回完整的url.如本博客首页返回http://www.cnblogs.com/wymninja/ host:设置或返回主 ...
- 改写URL的查询字符串QUERY_STRING(转)
查询字符串是指URL请求中"问号"后面的部分.比如,http://www.nowamagic.net/?foo=bar中粗体部分就是查询字符串,其中变量名是foo,值是bar. 1 ...
- 获取请求url的查询字符串
在两个页面间通过url传参的时候,需要获取传递的查询字符串,例如获取下面url的name对应的值: www.baidu.com/img?name=lili&age=18&school= ...
- 采用DAWG方式在大批量字符串中查询字符串
最近在一个项目中需要针对上百万条(大约在800W条)的字符串进行相关的处理.该字符串是以文本的形式存放在本地硬盘,并且更新频率为20分钟一次. 具体需求: 1.判断某一个字符串是否存在这800W条字符 ...
- 【Flask】jinja2根据url中的字符串,决定是否显示某个div
HTML {% if show_input_box %}<div style="padding:20px 60px 20px 60px"><form id=&qu ...
- 取出url中的字符_如何在JavaScript中解析URL:例如主机名,路径名,查询,哈希?...
统一资源定位符(缩写URL)是对Web资源(网页,图像,文件)的引用.URL指定资源位置和检索资源的机制(http,ftp,mailto). 例如,这是此博客文章的URL: 通常,您需要访问URL的特 ...
- URL中关于空格的编码转换成+或转换成%20的问题
https://www.jianshu.com/p/4a7eb969235d 本人Android开发,某一天,被告知自己程序URL的编码中,空格被转换成了+,导致对方识别不成空格.当然我清楚的记得我是 ...
- MySQL SELECT语句查询字符串长度大于、小于或等于指定值
在MySQL中查询字符串长度使用length关键字,具体用法如下: 先了解一下,Mysql中length().char_length()的区别. length():mysql里面的length()函数 ...
- java url json字符串_使用HttpClient将URL中的JSON查询字符串发送到Web服务(Java)
我有一个我建立的Web服务...我现在要做的是发送一个简单的请求,其中包含一个从Tapestry Web应用程序到该Web服务的json查询字符串.我四处搜索,大多数人都说使用Apache HttpC ...
最新文章
- 计算是计算机科学独有的方法,大学计算机基础教学中的计算思维培养.doc
- MYSQL查询语句待优化_mysql语句查询优化
- 不同编程语言能耗不同?看这27种语言对比!
- python时间格式转换time模块
- thinkphp v5.0.11漏洞_ThinkPHP(5.1.x ~ 5.1.31 5.0.x ~ 5.0.23)GetShell漏洞
- 得到python对象的真实大小
- android Handler UI线程后台线程通信
- h5 ios 滚动到底部_分享iOS平台使用H5原生滚动的下拉刷新功能v1.0.0 [不推荐]
- Notes for Linux Administration Handbook (1) : Booting and Shutting Down
- 【GIS】夜光遥感数据时序分析
- mac系统添加VSCode到右键菜单
- IE11下载文件时,文件扩展名自动由点改为下划线
- 常见图片分类及适用场景
- python安装requirement.txt
- python的pth打开方式_pytorch 加载(.pth)格式的模型实例
- 高等数学--微分定理及其应用(四)
- [聊天机器人]:开源ChatterBot工作原理
- 无线传感网络的发展现状及研究中的关键技术
- vivox27计算机功能,vivo x27 怎么连接电脑?
- 知乎移动端动态化方案 :Morph
热门文章
- linux tar命令压缩_Linux tar命令来压缩和提取文件
- java 配对问题_Java中的配对类是什么?
- dvm与art的区别_Android运行时– DVM与ART,AOT与JIT
- 开课吧:常见的数据可视化分析工具有哪些?
- OpenCV(一)Mac下OpenCV的安装和配置
- 从0开始构建自己的前端知识体系-JS-事件-键盘事件总结
- form表单file,select选择后自动提交
- 同一主机,不同域名绑定不同网站(IIS主机头实现方法)
- “敏捷”联袂“ALM” 上演市场模范夫妻秀
- Java8之list.stream的常见使用例子