From f900b6358398f115606d0aca0d2fe30e6d50629f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?old=E6=98=93?= <156663459@qq.com> Date: Thu, 21 Nov 2024 10:57:59 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9urlreffer?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/MinProLogin.vue | 63 ++++++++++++++++++++++------------ 1 file changed, 41 insertions(+), 22 deletions(-) diff --git a/src/components/MinProLogin.vue b/src/components/MinProLogin.vue index c6a0357..1dcb7b3 100644 --- a/src/components/MinProLogin.vue +++ b/src/components/MinProLogin.vue @@ -124,28 +124,44 @@ export default { // 获取来源页面的域名 const getReferer = () => { - let ref = document.referrer; - console.log('refref:', ref); - // 处理开发和生产环境 - if (!ref) { - if (process.env.NODE_ENV === 'development') { - ref = 'https://www.ycymedu.com'; // 开发环境默认值 - } else { - console.log('当前是生产环境'); - // window.location.href = "https://www.ycymedu.com"; // 生产环境重定向 - } - } else { - try { - const url = new URL(ref); - console.log('url:', url); - referer.value = url.origin; // 存储来源网址的域名部分 - } catch (error) { - console.error('解析来源网址时出错:', error); - } - } - }; + let refererUrl = null; - const initsignalRConnection = () => { + // 1. 通过 URL 参数获取 source 参数 + const urlParams = new URLSearchParams(window.location.search); + const sourceParam = urlParams.get('source'); // 提取 ?source=xxx + if (sourceParam) { + console.log('来源参数:', sourceParam); + try { + // 解码并解析来源 URL + const url = new URL(decodeURIComponent(sourceParam)); + refererUrl = url.origin; // 只取域名部分 + console.log('最终来源 URL:', refererUrl); + } catch (error) { + console.error('解析来源参数时出错:', error); + } + } + + // 2. 如果 URL 参数未提供来源信息,尝试使用 document.referrer 作为备选 + if (!refererUrl) { + refererUrl = document.referrer || null; + console.log('通过 document.referrer 获取来源:', refererUrl); + } + // 3. 如果仍然没有来源信息,处理开发环境的默认值 + if (!refererUrl) { + if (process.env.NODE_ENV === 'development') { + refererUrl = 'https://www.ycymedu.com'; // 开发环境默认值 + console.log('使用开发环境默认来源:', refererUrl); + } else { + console.log('生产环境无来源 URL'); + // 生产环境可以选择重定向,或按需处理 + } + } + + // 4. 返回最终的来源 URL + referer.value= refererUrl; +}; + +const initsignalRConnection = () => { // 3. Initialize SignalR client const connection = new signalR.HubConnectionBuilder() @@ -180,8 +196,11 @@ export default { } if (message.status == 2)//授权成功 { scanError.value = '授权成功' + console.log('referer:', referer); console.log('baseurl:', referer.value + message.baseurl); - window.location.href = referer.value + message.baseurl; + let ref = document.referrer; + console.log('ref:', ref); + window.location.href = referer.value + message.baseurl; } });