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登录授权认证并实现前台会员.后台管理员同时登录>我们做过了登录认证, ...
 
随机推荐
- WebAssembly简单指导---译
			
开发者指导 本页面提供一步一步的操作将一个简单的程序编译成webassembly 前提要求 为了编译成webAssembly,需要提前安装一些工具: Git.在Linux和OSX下已自带了Git,在W ...
 - 数据类型之Nullable
			
Nullable 此结构在 .NET Framework 2.0 版中是新增的.
 - Android - Rxjava 使用和原理
			
用RxJava写的一个Android的小Demo 我所理解的RxJava——上手其实很简单 http://www.jianshu.com/p/5e93c9101dc5
 - Java集合篇六:Map中key值不可重复的测试
			
package com.test.collection; import java.util.HashMap; import java.util.Map; //Map中key值不可重复的测试 publi ...
 - 元类(metaclass)
			
一.储备知识exec 储备知识exec:有下面三个参数 参数一:字符串形式的命令 参数二:全局作用域(字典形式),如果不指定默认使用globals() 参数三:局部作用域(字典形式),如果不指定默认就 ...
 - scss-嵌套属性
			
使用scss不但可以实现选择器的嵌套,属性也可以进行嵌套. 首先看一段代码实例: nav { border-style: solid; border-width: 1px; border-color: ...
 - Web前端面试指导(十二):::before 和:before有什么区别?
			
题目点评 这个问题看来很简单,但如果之前没有琢磨这个问题,给人感觉也是门头一垂,听到这个题目就懵逼了,因为原来从来没有注意过这个问题,即便有注意这个问题也不能很好的回答清楚.回答的技巧就是从相同点和不 ...
 - SharePoint Designer - Workflow
			
另一篇文章 SharePoint 2013 - Designer Workflow 1. Set field in current item : 不要连续多次使用,否则在发布时会出现unexpecte ...
 - 怎样在vs2013和vs2015中实现自动编译sass
			
Visual Studio不论是2013版本还是2015版本要自动编译都需要添加扩展. 添加扩展的方法,路径“工具”->“扩展和更新”,在打开的窗口“搜索”你需要的扩展根据提示“下载”和“安装” ...
 - solidity语言12
			
View Functions 函数声明为视图,将无权修改状态 pragma solidity ^0.4.16; contract C { function f(uint a, uint b) publ ...