ajax 全局拦载处理,可加密、过滤、筛选、sql防注入处理
//此方法放在公用的js里面即可。如此:所有的ajax请求都会通过此
$.ajaxSetup({
contentType: "application/x-www-form-urlencoded;charset=utf-8",
beforeSend: function() { //发送前执行的函数
try {
/**
* 当 processData: false,此时后台接收的值都会是object类型。此时应该把所有参数拿出来做成序列化形式 如:"name=bill&age=18" 否则后台无法接收
* 当 processData: true或者不设置时 json数据是已经序列化成字符类型 。如:"name=bill&age=18"。应用以下方法;
*/
//var params = arguments[1].data;
//if (params !== "" || params !== null) {
// var re = /select|update|delete|truncate|join|union|exec|insert|drop|count|’|--|"|=|;|>|<|%/i;
// params.split('&').forEach(function (item) { //js的forEach()方法
// item = item.split("=");
// var name = item[0];//名称
// var val = item[1];//值
// if (re.test(item[1])) {
// alert("请勿输入非法字符");
// arguments[0].abort(); //终止请求
// //请求方法记录相关日志
// //location.href = arguments[1].data.replace(sQuery, "");
// }
// });
//}
var params = arguments[1].data; //arguments是一个两个值的数组分别是0和1
re = /select|update|delete|truncate|join|union|exec|insert|drop|count|’|--|"|=|;|>|<|%/i; //可以根据需求自定义加减
for(var key in params) {
console.log(params[key]);
if(re.test(params[key])) {
alert("请勿输入非法字符");
arguments[0].abort(); //终止请求
//请求方法记录相关日志
//location.href = params.replace(sQuery, "");//跳转到某个页面
}else{
//加密在此处做。后台可以做全局统一解密
//此时应该把所有参数拿出来做成序列化形式 如:"name=bill&age=18" 否则后台无法接收
}
}
} catch(e) {
console.log(e);
//请求方法记录相关日志
}
},
complete: function(XMLHttpRequest, textStatus) {
try {
//通过XMLHttpRequest取得响应头,sessionstatus,
//var sessionstatus = XMLHttpRequest.getResponseHeader("sessionstatus");
//if(sessionstatus == "timeout") {
//如果超时就处理 ,指定要跳转的页面(比如登陆页)
//}
//此处可以对响应回来的数据进行解密
debugger;
if(textStatus !== "error") {
//通过XMLHttpRequest取得响应结果
var res = XMLHttpRequest.responseText;
var jsonData = JSON.parse(res);
console.log(jsonData);
if(jsonData.state == -1) {
//如果超时就处理 ,指定要跳转的页面(比如登陆页)
alert(jsonData.msg);
window.location.replace("/login/index.php");
} else if(jsonData.state == 0) {
//其他的异常情况,给个提示。
alert(jsonData.msg);
} else {
//正常情况就不统一处理了
}
}
//请求方法记录相关日志
} catch(e) {
console.log(e);
//请求方法记录相关日志
}
},
error: function(jqXHR, textStatus, errorMsg) { // 出错时默认的处理函数
try {
// jqXHR 是经过jQuery封装的XMLHttpRequest对象
// textStatus 可能为: null、"timeout"、"error"、"abort"或"parsererror"
// errorMsg 可能为: "Not Found"、"Internal Server Error"等
// 提示形如:发送AJAX请求到"/index.html"时出错[404]:Not Found
alert('发送AJAX请求到"' + this.url + '"时出错[' + jqXHR.status + ']:' + errorMsg);
//请求方法记录相关日志
} catch(e) {
console.log(e);
//请求方法记录相关日志
}
},
statusCode: { //自定义返回消息
404: function() {
alert('数据获取/输入失败,没有此服务。404');
},
504: function() {
alert('数据获取/输入失败,服务器没有响应。504');
},
500: function() {
alert('服务器有误。500');
}
},
//因为 jquery 在 GET 方法中会自动把 data 附加在 url 后面,所以将 processData 设置为 false 之后 url 后面会出现 [object object] ,这是 javascript 对象 toString() 过后的结果,也就是说我们的这个方法并不很适合 GET 方法
processData: false, //默认不序列化参数//dataFilter:对响应的数据进行过滤
});
ajax 全局拦载处理,可加密、过滤、筛选、sql防注入处理的更多相关文章
- 特殊字符的过滤方法,防sql防注入代码的过滤方法
特殊字符的过滤方法 function strFilter($str){ //特殊字符的过滤方法 $str = str_replace('`', '', $str); $str = str_replac ...
- php过滤参数特殊字符防注入
分享一例php实现过滤提交的参数数据以防止注入的代码,有需要的朋友参考下. 本节内容: php过滤特符字符,php防注入. in: 后端程序 例子: 代码示例: <?php /** * 安全防范 ...
- Ajax全局加载框(Loading效果)的配置
在Ajax进行后台数据请求的过程中,我们有时候会希望用户能知道页面后台还在做一些事情,这时候就需要给用户一个非常明确的提示,也就是我们所谓的进度条 废话完成~ 实现原理: Jquery可以对ajax进 ...
- .net 过滤 sql防注入类,省地以后每次都要重新弄!
/// <summary> /// 过滤不安全的字符串 /// </summary> /// <param name="Str"&g ...
- Django项目:CRM(客户关系管理系统)--52--43PerfectCRM实现AJAX全局账号登陆
# gbacc_ajax_urls.py # ————————42PerfectCRM实现AJAX全局账号注册———————— from django.conf.urls import url fro ...
- Django项目:CRM(客户关系管理系统)--51--42PerfectCRM实现AJAX全局账号注册
#urls.py """PerfectCRM URL Configuration The `urlpatterns` list routes URLs to views. ...
- 淘宝购物车页面 智能搜索框Ajax异步加载数据
如果有朋友对本篇文章的一些知识点不了解的话,可以先阅读此篇文章.在这篇文章中,我大概介绍了一下构建淘宝购物车页面需要的基础知识. 这篇文章主要探讨的是智能搜索框Ajax异步加载数据.jQuery的社区 ...
- Jquery表单序列化和AJAX全局事件
Jquery表单序列化 1.必须放在form标签内: 2.控件必须有name属性: 3.控件的value值会提交到服务器: 如: <form id="form1"> & ...
- Asp.Net Core 2.0 项目实战(11) 基于OnActionExecuting全局过滤器,页面操作权限过滤控制到按钮级
1.权限管理 权限管理的基本定义:百度百科. 基于<Asp.Net Core 2.0 项目实战(10) 基于cookie登录授权认证并实现前台会员.后台管理员同时登录>我们做过了登录认证, ...
随机推荐
- jQuery autocomplete 应用
1. 引入css和js <link rel="stylesheet" href="{{ url_for('static', filename='jquery.aut ...
- C#使用第三方组件Epplus操作Excel表
Epplus操作Excel基础详解 1.什么是Epplus Epplus是一个使用Open Office XML文件格式,能读写Excel2007/2010文件的开源组件,在导出Excel的时候不需要 ...
- java程序: 从kernel.ubuntu.com下载kernel - HttpURLConnection
用java实现从kernel.ubuntu.com下载内核的小工具 现在的最新的LTS版本是4.19,目前已经更新到4.19.13了. Kernel的更新通知里,经常有下面的陈述: 作为一个听劝的人, ...
- Java web service 异常
1.org/apache/commons/discovery/tools/DiscoverSingleton Exception in thread "main" java.lan ...
- Jms学习篇一:JMS介绍
1.JMS介绍: JMS即Java消息服务(Java Message Service)应用程序接口,是一个Java平台中关于面向消息中间件(MOM)的API JMS是一种与厂商无关的 API,用来访问 ...
- IO流之递归
递归: 递归,指在当前方法内调用自己的这种现象 public void method(){ System.out.println(“递归的演示”); //在当前方法内调用自己 method(); } ...
- iDempiere 使用指南 库存出入库研究
Created by 蓝色布鲁斯,QQ32876341,blog http://www.cnblogs.com/zzyan/ iDempiere官方中文wiki主页 http://wiki.idemp ...
- Java—集合框架 List和Set的contains()以及Map的containsKey()、containsValue()
如何判断集合中是否存在某个元素——contains() 1.List的contains(obj)方法 实际上,List调用contains(Object obj)方法时,会遍历List中的每一个元素, ...
- Windows远程桌面,出现身份验证错误,要求的函数不正确
升级windows10 1803后,mstsc远程桌面出现 mstsc 远程桌面要求的函数不受支持,这可能是由于 CredSSP 加密 Oracle 修正.如图所示: 运行(win+r) gpedit ...
- sudo cat > EOF权限问题
sudo bash -c 'cat << EOF > /etc/yum.repos.d/some-name.repo line1 line2 line3 EOF'