From 3c1d369b364e67e3bc985e73cc420af6d7e78e5c Mon Sep 17 00:00:00 2001 From: ddmt Date: Fri, 7 Feb 2025 11:28:18 +0800 Subject: [PATCH] 1.0.10-addcookie --- Tool/number.js | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/Tool/number.js b/Tool/number.js index 380d912..f34cbfb 100644 --- a/Tool/number.js +++ b/Tool/number.js @@ -108,4 +108,44 @@ function parseNginxLog (log) { return error; } return null; +} + +/* + * cookies 解析函数 + * @param {string} cookiesStr + * @return {Array} CookieArray + */ +function toCookiesArray(cookies) { + if (!cookies || cookies.length === 0) return; + + // 解析旧的 cookies + const cookieMap = {}; + cookies.split("; ").forEach(cookie => { + const [key, value] = cookie.split("="); + if (key) cookieMap[key] = value; + }); + + return cookieMap; +} + + +/* + * cookies 更新函数 + * @param {Array} setCookieArray 新的 Set-Cookie 数组 + */ +function updateCookies(cookies, setCookieArray) { + if (!setCookieArray || setCookieArray.length === 0) return; + + // 解析旧的 cookies + const cookieMap = toCookiesArray(cookies); + + // 解析新的 Set-Cookie 数组并更新 + setCookieArray.forEach(cookieStr => { + const cookiePair = cookieStr.split(";")[0]; // 只取 key=value + const [key, value] = cookiePair.split("="); + if (key) cookieMap[key] = value; + }); + + // 重新拼接成字符串存回全局 cookies + return Object.entries(cookieMap).map(([key, value]) => `${key}=${value}`).join("; "); } \ No newline at end of file