From 51b8bbafe460d1fd200b7d2a209896d8c5b6a668 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?old=E6=98=93?= <156663459@qq.com> Date: Thu, 21 Nov 2024 11:04:12 +0800 Subject: [PATCH] bug fixed --- src/components/MinProLogin.vue | 28 +++++++++++++++++++++++----- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/src/components/MinProLogin.vue b/src/components/MinProLogin.vue index 1dcb7b3..d4f3368 100644 --- a/src/components/MinProLogin.vue +++ b/src/components/MinProLogin.vue @@ -129,6 +129,7 @@ export default { // 1. 通过 URL 参数获取 source 参数 const urlParams = new URLSearchParams(window.location.search); const sourceParam = urlParams.get('source'); // 提取 ?source=xxx + if (sourceParam) { console.log('来源参数:', sourceParam); try { @@ -136,17 +137,34 @@ export default { const url = new URL(decodeURIComponent(sourceParam)); refererUrl = url.origin; // 只取域名部分 console.log('最终来源 URL:', refererUrl); + + // 存储来源到 Cookie + document.cookie = `referer=${encodeURIComponent(refererUrl)}; path=/; secure`; } catch (error) { console.error('解析来源参数时出错:', error); } } - // 2. 如果 URL 参数未提供来源信息,尝试使用 document.referrer 作为备选 + // 2. 如果 URL 参数未提供来源信息,尝试从 Cookie 获取 + if (!refererUrl) { + const cookies = document.cookie.split('; ').reduce((acc, cookie) => { + const [key, value] = cookie.split('='); + acc[key] = value; + return acc; + }, {}); + refererUrl = cookies.referer ? decodeURIComponent(cookies.referer) : null; + if (refererUrl) { + console.log('从 Cookie 中获取来源:', refererUrl); + } + } + + // 3. 如果仍然没有来源信息,尝试使用 document.referrer 作为备选 if (!refererUrl) { refererUrl = document.referrer || null; console.log('通过 document.referrer 获取来源:', refererUrl); } - // 3. 如果仍然没有来源信息,处理开发环境的默认值 + + // 4. 如果仍然没有来源信息,处理开发环境的默认值 if (!refererUrl) { if (process.env.NODE_ENV === 'development') { refererUrl = 'https://www.ycymedu.com'; // 开发环境默认值 @@ -157,10 +175,10 @@ export default { } } - // 4. 返回最终的来源 URL - referer.value= refererUrl; + // 5. 返回最终的来源 URL,并赋值给响应式变量 referer.value + referer.value = refererUrl; + //return refererUrl; }; - const initsignalRConnection = () => { // 3. Initialize SignalR client