XieXing 3 mesiacov pred
rodič
commit
7a03b1686b
1 zmenil súbory, kde vykonal 23 pridanie a 69 odobranie
  1. 23 69
      shudao-vue-frontend/src/utils/ticketAuth.js

+ 23 - 69
shudao-vue-frontend/src/utils/ticketAuth.js

@@ -104,46 +104,28 @@ export function getTicketFromUrl() {
     console.log('✅ 修正后的查询字符串:', search.substring(0, 100))
   }
   
-  // 尝试多种方式解析票据
+  // 直接手动解析获取原始票据,不做任何解码处理
   let ticket = null
+  let cleanSearch = search
+  if (cleanSearch.startsWith('?')) {
+    cleanSearch = cleanSearch.substring(1)
+  }
   
-  // 方式1: 使用 URLSearchParams
-  const urlParams = new URLSearchParams(search)
-  ticket = urlParams.get('iamcaspticket')
-  console.log('📋 方式1 (URLSearchParams) 结果:', ticket ? ticket.substring(0, 50) + '...' : 'null')
-  
-  // 方式2: 如果方式1失败,尝试手动解析(处理特殊情况)
-  if (!ticket && search) {
-    console.log('⚠️ URLSearchParams 解析失败,尝试手动解析...')
-    
-    // 移除开头的 ? 或 ?&
-    let cleanSearch = search
-    if (cleanSearch.startsWith('?&')) {
-      cleanSearch = cleanSearch.substring(2)
-    } else if (cleanSearch.startsWith('?')) {
-      cleanSearch = cleanSearch.substring(1)
-    }
-    
-    console.log('📋 清理后的字符串:', cleanSearch.substring(0, 50) + '...')
-    
-    // 按 & 分割参数
-    const params = cleanSearch.split('&')
-    console.log('📋 分割后的参数数量:', params.length)
-    
-    for (const param of params) {
-      // 只分割第一个 = 号,避免票据内容中的 = 被分割
-      const equalIndex = param.indexOf('=')
-      if (equalIndex === -1) continue
-      
-      const key = param.substring(0, equalIndex)
-      const value = param.substring(equalIndex + 1)
-      
-      console.log('📋 检查参数:', key)
-      if (key === 'iamcaspticket' && value) {
-        ticket = decodeURIComponent(value)
-        console.log('✅ 方式2 (手动解析) 找到票据:', ticket.substring(0, 50) + '...')
-        break
+  const params = cleanSearch.split('&')
+  for (const param of params) {
+    const equalIndex = param.indexOf('=')
+    if (equalIndex === -1) continue
+    const key = param.substring(0, equalIndex)
+    if (key === 'iamcaspticket') {
+      // 获取原始值,只做一次URL解码
+      const rawValue = param.substring(equalIndex + 1)
+      try {
+        ticket = decodeURIComponent(rawValue)
+      } catch (e) {
+        ticket = rawValue
       }
+      console.log('📋 获取到票据,长度:', ticket.length)
+      break
     }
   }
   
@@ -151,19 +133,6 @@ export function getTicketFromUrl() {
     console.log('🎫 成功获取到票据!')
     console.log('🎫 票据长度:', ticket.length)
     console.log('🎫 票据前50个字符:', ticket.substring(0, 50) + '...')
-    
-    // 票据可能已经解码,检查是否需要再次解码
-    try {
-      // 如果票据中包含 %,说明可能是 URL 编码的
-      if (ticket.includes('%')) {
-        const decoded = decodeURIComponent(ticket)
-        console.log('🔄 票据已解码')
-        ticket = decoded
-      }
-    } catch (e) {
-      console.log('⚠️ 票据解码失败,使用原始值:', e.message)
-    }
-    
     console.log('🔍 === 票据获取成功 ===')
     return ticket
   }
@@ -309,27 +278,12 @@ export async function processTicket(ticketData) {
   try {
     console.log('🔍 正在处理票据...')
     console.log('📡 请求接口:', TICKET_PROCESS_API)
-    console.log('📦 原始票据数据长度:', ticketData.length)
-    
-    // 清理票据中的各种特殊字符
-    let cleanTicket = ticketData
-      .replace(/\r\n/g, '')  // 移除 Windows 换行符
-      .replace(/\n/g, '')    // 移除 Unix 换行符
-      .replace(/\r/g, '')    // 移除回车符
-      .replace(/\s/g, '')    // 移除所有空白字符(空格、制表符等)
-      .replace(/\u0000/g, '') // 移除 NULL 字符
-      .trim()                // 移除首尾空白
-    
-    // 打印清理前后的对比,帮助调试
-    console.log('📦 清理前票据(前100字符):', ticketData.substring(0, 100))
-    console.log('📦 清理前票据包含换行符数量:', (ticketData.match(/\n/g) || []).length)
-    console.log('📦 清理前票据包含空格数量:', (ticketData.match(/ /g) || []).length)
-    
-    console.log('📦 清理后票据数据长度:', cleanTicket.length)
-    console.log('📦 票据前100字符:', cleanTicket.substring(0, 100))
+    console.log('📦 票据长度:', ticketData.length)
+    console.log('📦 票据前100字符:', ticketData.substring(0, 100))
     
+    // 直接使用原始票据,不做任何清洗
     const requestBody = {
-      ticket_data: cleanTicket
+      ticket_data: ticketData
     }
     
     console.log('📤 发送请求...')