ajax特殊情况下被动返回了新页面的处理方法
2016-10-11 14:54
246 查看
前言:
在正常的AJAX的调用中其回调函数都是可控的数据格式json或者直接就是字符串。
场景:
笔者当前就遇到一个特殊的情况,场景如下:
公司对特殊字符有要求,需要防止Xss攻击,在测试环境中均由项目自行处理,如此ajax中的success与error均可控,如此在前台交互告知用户存在特殊字符。
而在正式的生产环境中,公司的防火墙也做了特殊字符处理,而且在捕获特殊字符时,会直接跳转到错误页面。
这样就产生了一个问题:在ajax中,如果传入的参数中包含了特殊字符,那么返回data数据,就会是那个防火墙跳转的错误页面。此时在ajax中就需要做特殊处理。
由于考虑到参数传入后的结果处理方式有两种直接跳转到新的URL和Ajax处理,而在跳转新的URL的逻辑中,防火墙的此种处理方式,可以很好的衔接而不会太大的降低用户体验。
那么如上的场景中,在AJAX中的处理,就需要考虑到,当返回的是新页面时,如何才能将这个返回的页面作为新页面或者替换当前页面的内容展示给用户呢?
处理方法:
如下为处理方式:
error : function(data) {
if (data.responseText.indexOf("DOCTYPE")>=0) {
$(document).find("html").html(data.responseText);
//$.MsgBox.Alert("温馨提示", "您的操作有可能对网站造成安全威胁,已被拦截");
return false;
}
}
在正常的AJAX的调用中其回调函数都是可控的数据格式json或者直接就是字符串。
场景:
笔者当前就遇到一个特殊的情况,场景如下:
公司对特殊字符有要求,需要防止Xss攻击,在测试环境中均由项目自行处理,如此ajax中的success与error均可控,如此在前台交互告知用户存在特殊字符。
而在正式的生产环境中,公司的防火墙也做了特殊字符处理,而且在捕获特殊字符时,会直接跳转到错误页面。
这样就产生了一个问题:在ajax中,如果传入的参数中包含了特殊字符,那么返回data数据,就会是那个防火墙跳转的错误页面。此时在ajax中就需要做特殊处理。
由于考虑到参数传入后的结果处理方式有两种直接跳转到新的URL和Ajax处理,而在跳转新的URL的逻辑中,防火墙的此种处理方式,可以很好的衔接而不会太大的降低用户体验。
那么如上的场景中,在AJAX中的处理,就需要考虑到,当返回的是新页面时,如何才能将这个返回的页面作为新页面或者替换当前页面的内容展示给用户呢?
处理方法:
如下为处理方式:
error : function(data) {
if (data.responseText.indexOf("DOCTYPE")>=0) {
$(document).find("html").html(data.responseText);
//$.MsgBox.Alert("温馨提示", "您的操作有可能对网站造成安全威胁,已被拦截");
return false;
}
}
相关文章推荐
- 在controller中返回ajax处理后结果,页面显示xmlObjectDocument的解决方法
- Jquery的validate,清除form方法,显示密插件,正则特殊字符处理,js的call用法,ajax,h5支持情况,elclipse tomcate去掉项目名,js 的原型
- 当 jquery 发送 ajax 请求的时候遇到服务端session过期超时返回 302 跳转登陆页面的时候怎么办的处理方法
- 也就是说在有异步回调函数的情况下,方法的返回值基本都是不能使用的。【也有特殊情况】
- jquery解决浏览器缓存和中文处理及通用AJAX页面参数相同时只返回缓存的内容的解决办法
- ajax XMLHttpRequest请求页面返回的值和ashx处理程序返回的值
- Ajax处理XML,XMLHttpRequest对象的创建和访问servlet并返回xml数据到页面展示
- AJAX POST数据中有特殊符号处理方法
- ThinkPHP处理Ajax返回的方法
- ThinkPHP处理Ajax返回的方法
- jquery中ajax如何返回值到上层函数的方法以及对于js处理json对象方法的记录
- Jquery 使用Ajax获取后台返回的Json数据后,页面处理
- .net调用别人的http页面,返回结果,url中有中文的处理,get和post两种方法
- Action中通过Ajax返回特定值的方法(而不是整个页面)
- Jquery 使用Ajax获取后台返回的Json数据后,页面处理
- AJAX对服务器返回XML的处理方法
- 在页面中传参数时有特殊字符的处理方法(转)
- 关于js处理ajax请求返回json数据时出现页面缓存的解决方案(适用于showdialog)
- 处理ajax返回页面代码中的script
- ajax提交session超时跳转页面使用全局的方法来处理