|
|
@@ -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
|