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:对响应的数据进行过滤
});

转载于:https://www.cnblogs.com/Mr-lin66/p/9655881.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/367323.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

golang jwt设置过期_听说你的JWT库用起来特别扭,推荐这款贼好用的!

以前一直使用的是jjwt这个JWT库&#xff0c;虽然小巧够用, 但对JWT的一些细节封装的不是很好。最近发现了一个更好用的JWT库nimbus-jose-jwt&#xff0c;简单易用&#xff0c;API非常易于理解&#xff0c;对称加密和非对称加密算法都支持&#xff0c;推荐给大家&#xff01;简介…

亚马逊DynamoDB

介绍 Amazon DynamoDB是一项完全托管的NoSQL数据库服务&#xff0c;可提供无缝的可扩展性和快速可预测的性能。 Amazon DynamoDB自动将表的数据和流量分布在足够数量的服务器上&#xff0c;以处理客户指定的请求容量和存储的数据量&#xff0c;同时保持一致且快速的性能。 所…

随机验证码 pillow

安装 pip3 install pillow 基本使用 import PILfrom PIL import Imagefrom PIL import ImageDraw, ImageFontimport random 1.创建图片 from PIL import Image img Img.new(mode"RGB",size(120.30),color(255,255,255))# 在图片查看器中打开 # img.show()# 保存在本地…

微信小程序裁剪图片成圆形

前言 最近在开发小程序&#xff0c;产品经理提了一个需求&#xff0c;要求微信小程序换头像&#xff0c;用户剪裁图片必须是圆形&#xff0c;也在github上看了一些例子&#xff0c;一般剪裁图片用的都是方形&#xff0c;所以自己打算写一个小组件&#xff0c;可以把图片剪裁成圆…

android 系统挂载ext4格式U盘,macOS 系统下格式化 U 盘为 ext4 格式

您好&#xff0c;我是小白&#xff0c;和您请教一下哦。如果您有空QQ回复的话&#xff0c;非常感谢&#xff01;我在第一步输入完安装homebrew的命令后&#xff0c;终端报错wangneddeMBP:~ ned$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebr…

MFC控件编程之组合框跟列表框

MFC控件编程之组合框跟列表框 一丶简介 如果要使用组合框跟列表框.那么就要知道.组合框列表框是最核心的东西就是索引. 索引是从0开始的. 二丶组合框列表框常用的方法 AddString(字符串) 添加一个字符串.放到最后面. DeleteString(索引); 删除指定索引的字符串. int GetCurSe…

使用JaCoCo Maven插件为单元和集成测试创建代码覆盖率报告

当我开始使用Java 7时&#xff0c;我立即注意到Cobertura Maven插件不支持它 。 这对我来说是个大问题&#xff0c;因为我每天都使用代码覆盖率报告。 我做了一些研究&#xff0c;发现了JaCoCo代码覆盖库 。 看起来很有趣&#xff0c;我决定试一试。 问题在于配置它确实很困难…

多重继承_Python 和 Java 基础对比 10 —— 类的封装、继承和多态

Python大星一、Python 类的封装、继承和多态封装继承Python 支持多父类的继承机制&#xff0c;所以需要注意圆括号中基类的顺序&#xff0c;若是基类中有相同的方法名&#xff0c;并且在子类使用时未指定&#xff0c;Python 会从左至右搜索基类中是否包含该方法。一旦查找到则直…

前端也要会的数据结构 (不定期更新篇)

前端的软肋 一说到前端大家脑子里只有&#xff0c;布局、展示数据、修改样式等等。可是数据是哪里来的呢&#xff1f;后端给的后端给的。数据的结构呢&#xff1f;后端给啥用啥。 这就是前端的一个软肋。我们的业务让我们并不需要过深入的了解数据结构&#xff0c;数据结构和…

鸿蒙系统8月9日发布,8月9日,华为发布EMUI10.0系统+展示鸿蒙系统

8月9日&#xff0c;华为将召开华为全球开发者大会&#xff0c;本次大会邀请了5000名全球开发者、1500位合作伙伴&#xff0c;是华为历来规模最大的一次会议。在华为开发者大会上&#xff0c;华为将推出EMUI 10.0系统&#xff0c;由华为消费也业务软件总裁王成录主讲。EMUI是手机…

EclipseLink MOXy和用于JSON处理的Java API –对象模型API

用于JSON处理的Java API&#xff08;JSR-353&#xff09;是用于生成和使用JSON的Java标准&#xff0c;它是Java EE 7的一部分引入。JSR-353包括对象&#xff08;类似于DOM&#xff09;和流&#xff08;类似于StAX&#xff09;API。 在本文中&#xff0c;我将演示我们在EclipseL…

matlab main函数_Python 和MATLAB 制作Gif 图像

主要内容概述&#xff1a;预备知识MATLAB 代码实现GIF使用imageio 生成GIF使用animation 交互式方式生成GIF总结0&#xff0c;预备知识首先了解下什么是GIF 图片&#xff0c;以及常用的图片格式。GIF的全称是Graphics Interchange Format&#xff0c;可译为图形交换格式&#x…

C# MVC IOC、依赖注入

在MVC5中依赖注入&#xff0c;本文介绍通过扫描类型RegisterAssemblyTypes来进行注册 另外还有扫描模块RegisterAssemblyModules来注册 使用Autofac框架进行组件的依赖注入 Autofac是.NET领域最为流行的IOC框架之一&#xff0c;传说是速度最快的一个 先通过Nuget安装程序包 PM&…

ORB-SLAM2的特征提取算法

ORB-SLAM2跟踪线程对相机输入的每一帧图像进行跟踪处理&#xff0c;如下图所示&#xff0c;主要包括4步&#xff0c;提取ORB特征、从上一帧或者重定位来估计初始位姿、局部地图跟踪和关键帧处理。 以下结合相关理论知识&#xff0c;阅读ORB-SLAM2源代码&#xff0c;从而理解ORB…

在vue中使用SockJS实现webSocket通信

最近接到一个业务需求,需要做一个聊天信息的实时展示的界面,这就需要和服务器端建立webSocket连接,从而实现数据的实时获取和视图的实时刷新.在此将我的实现记录下来,希望可以给有同样需求的人一些帮助.废话少说,下面我就来讲一下我的实现过程: 前提 要进行文章中的代码的测试…

DI / CDI –基础

简介&#xff08;DI / CDI基础&#xff09; 首先&#xff0c;我认为对此会有一些困惑&#xff0c;但事实是&#xff0c;它们是相同的–不同之处在于用法及其用途。 DI&#xff08;依赖注入&#xff09;是通用术语–该功能基本上是在任何应用程序上进行Bean发现和Bean连接过程的…

引导界面图标好大_游戏里那些图标和界面,原来是这么设计出来的?

UI设计最硬核的思维 就是功能微信现在在做一种全面连接的功能&#xff0c;而游戏需要实现的是人机互动的功能。实现并完善功能&#xff0c;是互联网、游戏、网站、渴望UI人才的根本原因。如果说有电脑的世界是一片很大的面&#xff0c;那么可视化的操作&#xff0c;都是UI设计师…

爬格子呀9.17(图论)

刘汝佳的紫书差不多就告一段落吧&#xff0c;我觉得可以了&#xff0c;怎么说呢&#xff0c;这书也陪着自己走了一年多了吧&#xff0c;也目睹了从一个啥也不会的萌新到一个稍微会一点的萌新的转变。 差不多开始下本书吧&#xff0c;自己也大三了&#xff0c;时间真的有点紧啊w…

一个vue加egg.js的博客

之前自己的博客是用hexo做的&#xff0c;后面想做一个有后台的博客就打算用vue加node来试试&#xff0c;于是就有了这个博客。 项目地址 W-Blog W-Blog是一个基于vue和node的小小小博客 前端用vue&#xff0c;后端用egg.js 快速入门 技术栈 前端&#xff1a; 用户端&#…

js判断处理undefined类型的数据

code: resFlag response.result.data.result; /查询客户为白名单用户时,将"*该企业已被列入黑名单"标记清除 if(typeof resFlag "undefined"){$("#companynameisblack").text(""); }转载于:https://www.cnblogs.com/YLQBL/p/8819696…