From f49e81794c3cfee00b1f5d50959759cfbce87b22 Mon Sep 17 00:00:00 2001 From: naman-bruno Date: Tue, 21 Jan 2025 15:41:34 +0530 Subject: [PATCH] Fixed: user cookie header getting overwritten by stored cookie --- .../bruno-electron/src/ipc/network/index.js | 25 ++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/packages/bruno-electron/src/ipc/network/index.js b/packages/bruno-electron/src/ipc/network/index.js index 218fadf38..738a8309c 100644 --- a/packages/bruno-electron/src/ipc/network/index.js +++ b/packages/bruno-electron/src/ipc/network/index.js @@ -333,7 +333,30 @@ const configureRequest = async ( if (preferencesUtil.shouldSendCookies()) { const cookieString = getCookieStringForUrl(request.url); if (cookieString && typeof cookieString === 'string' && cookieString.length) { - request.headers['cookie'] = cookieString; + const existingCookieHeaderName = Object.keys(request.headers).find( + name => name.toLowerCase() === 'cookie' + ); + const existingCookieString = existingCookieHeaderName ? request.headers[existingCookieHeaderName] : ''; + + // Helper function to parse cookies into an object + const parseCookies = (str) => str.split(';').reduce((cookies, cookie) => { + const [name, ...rest] = cookie.split('='); + if (name && name.trim()) { + cookies[name.trim()] = rest.join('=').trim(); + } + return cookies; + }, {}); + + const mergedCookies = { + ...parseCookies(existingCookieString), + ...parseCookies(cookieString), + }; + + const combinedCookieString = Object.entries(mergedCookies) + .map(([name, value]) => `${name}=${value}`) + .join('; '); + + request.headers[existingCookieHeaderName || 'Cookie'] = combinedCookieString; } }