欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 维修 > VUE 实现浏览器URL替换

VUE 实现浏览器URL替换

2025/3/9 21:21:04 来源:https://blog.csdn.net/zyzBulus/article/details/146068362  浏览:    关键词:VUE 实现浏览器URL替换

场景:很多时候第三方或者系统之间跳转页面时需要在Url上带有私密信息,比如Token,以下是替换Url中token的数据的操作:

VUE项目中Main.js中获取Token且替换掉浏览器上的Url

const getTokenFromUrl = () => {const url = window.location.href;const urlParams = new URLSearchParams(new URL(url).search);return urlParams.get('token');
};const getnewurl = (name) => {var loca = window.location;var baseUrl = loca.origin + loca.pathname + "?";var query = loca.search.substr(1);if (query.indexOf(name) > -1) {var obj = {}var arr = query.split("&");for (var i = 0; i < arr.length; i++) {arr[i] = arr[i].split("=");obj[arr[i][0]] = arr[i][1];};delete obj[name];var url = baseUrl + JSON.stringify(obj).replace(/[\"\{\}]/g, "").replace(/\:/g, "=").replace(/\,/g, "&");return url};
}window.history.replaceState(null, null, getnewurl('token'));

完整代码:

import { createApp } from 'vue'
import App from './App.vue'
// import Scratchcard  from '@nutui/nutui-bingo'
import NutBig from "@nutui/nutui-bingo";
import "@nutui/nutui-bingo/dist/style.css";
import 'element-ui/lib/theme-chalk/index.css';
import VueRouter from 'vue-router';
import { setLocalStorageWithExpiry, getLocalStorageWithExpiry } from '@/base/config';const app = createApp(App);
app.use(NutBig);
app.use(VueRouter);// 从 URL 中获取 token 的函数
const getTokenFromUrl = () => {const url = window.location.href;const urlParams = new URLSearchParams(new URL(url).search);return urlParams.get('token');
};const getLotteryCodeFromUrl = () => {const url = window.location.href;const urlParams = new URLSearchParams(new URL(url).search);return urlParams.get('code');
};const getnewurl = (name) => {var loca = window.location;var baseUrl = loca.origin + loca.pathname + "?";var query = loca.search.substr(1);if (query.indexOf(name) > -1) {var obj = {}var arr = query.split("&");for (var i = 0; i < arr.length; i++) {arr[i] = arr[i].split("=");obj[arr[i][0]] = arr[i][1];};delete obj[name];var url = baseUrl + JSON.stringify(obj).replace(/[\"\{\}]/g, "").replace(/\:/g, "=").replace(/\,/g, "&");return url};
}// 获取 token
const token = getTokenFromUrl();
const lotteryCode = getLotteryCodeFromUrl();if (token) {// 将 token 存储到 localStoragesetLocalStorageWithExpiry('token', token, parseInt(process.env.VUE_APP_TOKEN_EXPIRES));// localStorage.setItem('token', token);console.log('Token 已成功获取并存储:', token);
} else {let tokenExp = getLocalStorageWithExpiry('token');if (tokenExp == null) {alert('身份验证失败');console.log('URL 中未找到 token 参数');}
}if (lotteryCode) {// 将 token 存储到 localStoragelocalStorage.setItem('lotteryCode', lotteryCode);console.log('活动编号已成功获取并存储:', lotteryCode);
} else {alert('活动编号未查到');console.log('URL 中未找到 lotteryCode/code 参数');
}
window.history.replaceState(null, null, getnewurl('token'));
app.mount('#app');// const app = createApp(App)
// app.use(Scratchcard)

效果请求为http://localhost:8081/?token=56e1ab106e688445f79ad518ad4dae&code=5566

显示为:

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词