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