以下是加密和解密url的方法
//*
* url参数加密
*传入的json格式字符串
* @param {*Object} query
*/
const EncryUrl=query={
if (! utils.isobject(query ) }
返回' ';
}
try {
query=JSON.stringify(query );
query=window.encodeuri component (query;
returnwindow.btoa(query; //编码
}catch(err ) {
console.log (' % curl-encry-error:' JSON.stringify ),' color:red;' );
}
返回' ';
}
//*
*解密URL参数
*接收加密的json字符串
* @param {*string} val
*/
const DecryptUrl=val={
if (! utils.isstring(val ) }
返回假;
}
try {
letdecrystr=window.atob(val; //解码
return window.decodeuricomponent;
}catch(err ) {
console.log (' % curl-decry-error:' JSON.stringify ),' color:red;' );
}
返回假;
}
以上,加密方法EncryUrl,首先判断输入的数据是否是Object的,将json变换成字符串,使用encodeURIComponent进行URI编码(encodeURIComponent )方法中文在使用后的window.btoa上报告时,解密DecryptUrl,同样相反执行解密。 关于为什么后来没有使用JSON.parse,请看后面的;
//*
*从地址栏获取指定的参数值
* @param {*string} param
*/
const GetQueryParam=(param )={
let h=window.location.href;
letreg=newregexp('[? () )、' param '=([,-w][]?' 、' I ';
if(reg.test(h ) ) }
letv=reg.exec(h ) [1];
return v;
}
返回' ';
(;
//*
*返回地址栏加密Object
* @param {*string} param
*/
const GetQueryParamOfObjEntry=()={
letkeystr=getqueryparam('key );
if (! keyStr ) {
返回' ';
}
try {
letobjstr=decryptURL(keystr );
letobj=JSON.parse(objstr );
返回对象;
}catch(err ) {
console.log (' % curl-JSON-parse-error:' JSON.stringify ),' color:red;' );
}
返回' ';
}
以上两种方法,GetQueryParam封装了获取指定链接参数的代码块,GetQueryParamOfObjEntry获取位于名为key的指定参数后面的解码数据,其中JSON 因为我们约定了链接后方参数是以key为key的一个参数,所以当然可以用其他参数代替。