Vue.js中使用Jquery访问网络,并对参数进行加密处理

以下是我在使用Vue.js开发项目中封装的网络访问工具类,并对参数进行加密处理,然后对服务端返回的数据进行签名验证解密处理。
//访问网络使用的jquery提供的ajax方法
 
 

const jq= require("jquery"); //导入jquery
const KEYUTIL=require("KEYUTIL"); //签名验证
const KJUR=require("KJUR"); //密码加解密
export default{
/*
* 访问网络的公共方法
* url: 服务器端接口地址
* param: 传递的参数,json对象
* callback: 回调地址
* isSign: 是否需要签名验证
* commpleteCallback: 请求完成的回调方法,可有可无
*/
loadData(url,param,callback,isSign,commpleteCallback){
var that=this;
if(isSign){
var temp = this.parseURL(url);//解析url地址
var keyArray = new Array();
for ( var key in temp.params) {
keyArray.push(key);
}

for ( var key in param) {
temp.params[key] = param[key];

keyArray.push(key);

}
keyArray.sort();//将参数进行排序
var signStr = '';
//将所有参数进行拼接
for (var i = 0; i < keyArray.length; i++) {
var key = keyArray[i];
if(key=="sign") continue;
var value = temp.params[key];
if(value!=undefined){
if (typeof value == "object") {

value = JSON.stringify(value);

}
signStr += key + '=' + value + '&';
}

}

var rsa = KEYUTIL.getKey("abdcdfsfd11212");//这里面放入公钥文件内容
var hSig = rsa.signString(signStr, 'sha1');//将拼接的参数进行签名
param['sign'] = hSig;
}
//调用jquery的ajax方法进行异步请求
jq.ajax({
url:url,
type:'post',
dataType:'jsonp',
data:param,
beforeSend(request){

},
success(data,textStatus,request){

//请求成功后的处理

if(isSign){
var PublicKeyRSA = KEYUTIL.getKey("eeeee232323");//这里放入服务器私钥文件的内容
var md5Result = JSON.stringify(data);//将服务器返回的data数据进行json转换
//将服务器返回的数据进行签名验证
//sign为签名信息
var isValid = PublicKeyRSA.verifyString(KJUR.crypto.Util.md5(md5Result), sign);

if (isValid) {
callback(data);
}

}else{
callback(data);
}
},
complete(xhr,ts){
if(commpleteCallback){
commpleteCallback();
}
}
});
},
/*
* 解析url地址中的参数
*/
parseURL(url){
var a = document.createElement('a');
a.href = url;
return {
source : url,
protocol : a.protocol.replace(':', ''),
host : a.hostname,
port : a.port,
query : a.search,
params : (function() {
var ret = {}, seg = a.search.replace(/^\?/, '').split('&'), len = seg.length, i = 0, s;
for (; i < len; i++) {
if (!seg[i]) {
continue;
}
s = seg[i].split('=');
ret[s[0]] = s[1];
}
return ret;
})(),
file : (a.pathname.match(/\/([^\/?#]+)$/i) || [ , '' ])[1],
hash : a.hash.replace('#', ''),
path : a.pathname.replace(/^([^\/])/, '/$1'),
relative : (a.href.match(/tps?:\/\/[^\/]+(.+)/) || [ , '' ])[1],
segments : a.pathname.replace(/^\//, '').split('/')
};
}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值