liuq hai 4 meses
pai
achega
f16817431e
Modificáronse 1 ficheiros con 39 adicións e 16 borrados
  1. 39 16
      server.js

+ 39 - 16
server.js

@@ -658,21 +658,22 @@ async function handleGetQueryLogin(config, credentials) {
   
   console.log('=== GET 查询参数登录 ===');
   console.log(`目标URL: ${targetBaseUrl}${loginUrl}`);
+  console.log(`用户名参数名: ${usernameParam}`);
+  console.log(`密码参数名: ${passwordParam}`);
   console.log(`用户名: ${credentials.username}`);
   console.log(`密码: ${'*'.repeat(credentials.password.length)}`);
   console.log(`企业代码: ${entCode}`);
   
-  // 构建查询参数
-  const params = new URLSearchParams({
-    [usernameParam]: credentials.username,
-    [passwordParam]: credentials.password,
-    ent_code: entCode,
-    code: 'undefined',
-    mySel: 'undefined',
-    saveCookie: saveCookie,
-    isOnly: isOnly,
-    _: Date.now().toString() // 时间戳,防止缓存
-  });
+  // 构建查询参数 - 确保参数名正确
+  const params = new URLSearchParams();
+  params.append(usernameParam, credentials.username);
+  params.append(passwordParam, credentials.password);
+  params.append('ent_code', entCode);
+  params.append('code', 'undefined');
+  params.append('mySel', 'undefined');
+  params.append('saveCookie', saveCookie);
+  params.append('isOnly', isOnly);
+  params.append('_', Date.now().toString()); // 实时时间戳,防止缓存
   
   const loginUrlWithParams = `${targetBaseUrl}${loginUrl}?${params.toString()}`;
   
@@ -1299,20 +1300,42 @@ app.get('/api/auto-login/:siteId', async (req, res) => {
       return res.send(intermediateHtml);
     }
     
-    // 对于 GET 查询登录,如果有 redirectUrl,直接重定向
+    // 对于 GET 查询登录,如果有 redirectUrl,使用 HTML 页面设置 Cookie 后跳转
     if (config.loginMethod === 'get-query-login' && loginResult.redirectUrl) {
       console.log(`[${requestId}] GET 查询登录成功,重定向到: ${loginResult.redirectUrl}`);
-      console.log(`[${requestId}] 总耗时: ${Date.now() - startTime}ms`);
-      console.log('='.repeat(80) + '\n');
       
-      // 设置 Cookie 后重定向
+      // 解析 Cookie
+      const cookieData = parseCookies(loginResult.cookies);
+      console.log(`[${requestId}] 解析到 ${cookieData.length} 个 Cookie:`);
+      cookieData.forEach((cookie, index) => {
+        console.log(`[${requestId}]   Cookie ${index + 1}: ${cookie.name} = ${cookie.value.substring(0, 20)}...`);
+      });
+      
+      // 生成跳转 HTML,确保 Cookie 正确设置
+      const html = generateRedirectHTML(
+        cookieData,
+        config.targetHost,
+        config.targetDomain,
+        requestId,
+        loginResult.redirectUrl,
+        null
+      );
+      
+      // 在响应头中设置 Cookie
+      console.log(`[${requestId}] 设置响应头 Cookie...`);
       loginResult.cookies.forEach((cookie, index) => {
+        // 修改 Cookie 的 Domain,移除端口号
         let modifiedCookie = cookie.replace(/Domain=[^;]+/i, `Domain=${config.targetDomain}`);
         res.setHeader('Set-Cookie', modifiedCookie);
         console.log(`[${requestId}]   设置 Cookie ${index + 1}: ${modifiedCookie.substring(0, 80)}...`);
       });
       
-      return res.redirect(loginResult.redirectUrl);
+      const duration = Date.now() - startTime;
+      console.log(`[${requestId}] 总耗时: ${duration}ms`);
+      console.log(`[${requestId}] 返回跳转页面`);
+      console.log('='.repeat(80) + '\n');
+      
+      return res.send(html);
     }
     
     // 解析 Cookie