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('/')
};
}
}
Vue.js中使用Jquery访问网络,并对参数进行加密处理
最新推荐文章于 2024-10-12 15:46:37 发布
以下是我在使用Vue.js开发项目中封装的网络访问工具类,并对参数进行加密处理,然后对服务端返回的数据进行签名验证解密处理。
//访问网络使用的jquery提供的ajax方法