你这个问题是因为跨域问题导致,重定向失败。
有两种解决方案,希望能帮助你。
解决方案优化
方案1: 使用 "window.location.href" 进行跳转
可以使用 "window.location.href" 进行跳转,而不是使用 Vue Router 的
"this.$router.push"。这样可以确保地址栏的地址与当前页一致,从而可以成功分享页面。这种方法适用于需要分享的页面较少的情况。作为一个单页应用,这样的刷新页面跳转方式依然可行。
示例代码:
// 旧方法: this.$router.push('/new-page');
// 新方法: 使用 window.location.href 跳转
window.location.href = '/new-page';
方案2: 保存在本地的入口地址
在用户首次进入应用时,将入口地址保存在本地存储中。当需要获取签名时,从本地存储中取出入口地址。注意,只在刚进入单页应用时保存入口地址。
示例代码:
// 仅在用户首次进入应用时保存入口地址
if (!sessionStorage.getItem('initialHref')) {
const href = window.location.href;
sessionStorage.setItem('initialHref', href);
}
// 需要获取签名时,从本地存储中取出入口地址
const initialHref = sessionStorage.getItem('initialHref');
通过这种方法,可以确保每次获取签名时使用的都是用户首次进入应用时的入口地址,从而避免分享链接失败的问题。