项目中为了解决xss攻击,后台对特殊字符做了转码处理,前端接受到的是含有"等的数据;遇到的问题:
1.template中不能自己识别转码后的字符
解决办法:加@符号--> {{ @ v.userName}}
2.在ie中,点击a标签(含下载功能),当a标签中url含中文时候,无法实现下载功能
解决办法:使用encodeURL
<a href="javascript:location.href = encodeURL('需要进行编码加密的url')">点击下载</a>
3.对返回的json进行转码
functionhtmlDecode(text){
vartemp = document.createElement('div');
temp.innerHTML = text;
output = temp.innerText || temp.textContent;
temp =null;
returnoutput;
}
使用:
$.ajax({
url :'请求url',
type :'post',
dataType :'json',
success :function(data) {
data=JSON.parse(htmlDecode(JSON.stringify(data)));
}
上述解决办法还会遇到问题,就是将整个json数据进行转码的话,json中将会包含特殊字符,json对特殊字符是不识别的,因此我采用的方法是,将我用到的某个数据进行转码
eg:$("#projectDescDetail").val(htmlDecode(data.enterProjectDTO.projectDesc));
但是终究是治标不治本的问题,希望能找到更好的处理方法
4.通过 JSON.stringify 和JSON.parse来在页面之间传递对象数据的,众所周知,JSON.parse这个js方法,解析特殊的字符串会抛错。
解决办法:
转换:JSON.stringify(encodeURIComponent(URI))
解析:JSON.parse(decodeURIComponent(URI));