# 加密地址栏参数 query string
# 1. 介绍
加密 query string,避免篡改
# 2. 示例
const QUERY_STRING_PARAMS_NAME = 'params';
// {name: '张三'} -> params=abcefg
export function encodeUrlQueryString(params: object) {
const newParams = { ...params };
Object.getOwnPropertyNames(newParams).forEach((key) => {
if (newParams[key] == null) {
delete newParams[key];
}
});
const paramsString = JSON.stringify(newParams);
const paramsStringUrlEncode = encodeURIComponent(paramsString);
const paramsStringUrlEncodeBase64 = window.btoa(paramsStringUrlEncode);
return { [QUERY_STRING_PARAMS_NAME]: paramsStringUrlEncodeBase64 };
}
// params=abcefg -> {name: '张三'}
export function decodeUrlQueryString(query: { [QUERY_STRING_PARAMS_NAME]: string }) {
const { [QUERY_STRING_PARAMS_NAME]: paramsStringUrlEncodeBase64 } = query;
const paramsStringUrlEncode = window.atob(paramsStringUrlEncodeBase64);
const paramsString = decodeURIComponent(paramsStringUrlEncode);
const params = JSON.parse(paramsString);
return params;
}
上一篇: 下一篇:
本章目录