From 34c3709b2efad4076d0fecdbbcbca2e4bd59c59a Mon Sep 17 00:00:00 2001 From: Jorrin Date: Mon, 5 Feb 2024 22:04:01 +0100 Subject: [PATCH 1/3] fix headers not being applied to request --- src/background/messages/makeRequest.ts | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/background/messages/makeRequest.ts b/src/background/messages/makeRequest.ts index bdc16fa..13763b0 100644 --- a/src/background/messages/makeRequest.ts +++ b/src/background/messages/makeRequest.ts @@ -52,13 +52,11 @@ const handler: PlasmoMessaging.MessageHandler> = async (r const url = makeFullUrl(req.body.url, req.body); await assertDomainWhitelist(req.sender.tab.url); - if (req.body.headers['User-Agent']) { + if (Object.keys(req.body.headers).length > 0) { await setDynamicRules({ ruleId: MAKE_REQUEST_DYNAMIC_RULE, targetDomains: [new URL(url).hostname], - requestHeaders: { - 'User-Agent': req.body.headers['User-Agent'], - }, + requestHeaders: req.body.headers, }); } From 710b40aa8a13cada223cf4b8a2a3c27729c9ce36 Mon Sep 17 00:00:00 2001 From: Jorrin Date: Tue, 6 Feb 2024 20:15:45 +0100 Subject: [PATCH 2/3] add cookies --- package.json | 3 ++- src/background/messages/makeRequest.ts | 9 ++++++++- src/utils/declarativeNetRequest.ts | 10 ++++++++++ 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 1134e5a..e17da76 100644 --- a/package.json +++ b/package.json @@ -44,7 +44,8 @@ "manifest": { "permissions": [ "declarativeNetRequest", - "tabs" + "tabs", + "cookies" ], "host_permissions": [ "", diff --git a/src/background/messages/makeRequest.ts b/src/background/messages/makeRequest.ts index 13763b0..4d09cd9 100644 --- a/src/background/messages/makeRequest.ts +++ b/src/background/messages/makeRequest.ts @@ -69,11 +69,18 @@ const handler: PlasmoMessaging.MessageHandler> = async (r const contentType = response.headers.get('content-type'); const body = contentType?.includes('application/json') ? await response.json() : await response.text(); + const cookies = await (chrome || browser).cookies.getAll({ + url: response.url, + }); + res.send({ success: true, response: { statusCode: response.status, - headers: Object.fromEntries(response.headers.entries()), // Headers object isn't serializable + headers: { + ...Object.fromEntries(response.headers.entries()), + 'Set-Cookie': cookies.map((cookie) => `${cookie.name}=${cookie.value}`).join('; '), + }, body, finalUrl: response.url, }, diff --git a/src/utils/declarativeNetRequest.ts b/src/utils/declarativeNetRequest.ts index 5dac227..0b1deaa 100644 --- a/src/utils/declarativeNetRequest.ts +++ b/src/utils/declarativeNetRequest.ts @@ -56,6 +56,11 @@ export const setDynamicRules = async (body: DynamicRule) => { operation: chrome.declarativeNetRequest.HeaderOperation.SET, value: '*', }, + { + header: 'Access-Control-Allow-Credentials', + operation: chrome.declarativeNetRequest.HeaderOperation.SET, + value: 'true', + }, ...mapHeadersToDeclarativeNetRequestHeaders( body.responseHeaders ?? {}, chrome.declarativeNetRequest.HeaderOperation.SET, @@ -99,6 +104,11 @@ export const setDynamicRules = async (body: DynamicRule) => { operation: 'set', value: '*', }, + { + header: 'Access-Control-Allow-Credentials', + operation: 'set', + value: 'true', + }, ...mapHeadersToDeclarativeNetRequestHeaders(body.responseHeaders ?? {}, 'set'), ], }, From 346845969336bf7aa3b655adc2bd6db551e7f779 Mon Sep 17 00:00:00 2001 From: Jorrin Date: Wed, 7 Feb 2024 16:09:14 +0100 Subject: [PATCH 3/3] comma seperated Set-Cookie instead --- src/background/messages/makeRequest.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/background/messages/makeRequest.ts b/src/background/messages/makeRequest.ts index 4d09cd9..19aa779 100644 --- a/src/background/messages/makeRequest.ts +++ b/src/background/messages/makeRequest.ts @@ -79,7 +79,7 @@ const handler: PlasmoMessaging.MessageHandler> = async (r statusCode: response.status, headers: { ...Object.fromEntries(response.headers.entries()), - 'Set-Cookie': cookies.map((cookie) => `${cookie.name}=${cookie.value}`).join('; '), + 'Set-Cookie': cookies.map((cookie) => `${cookie.name}=${cookie.value}`).join(', '), }, body, finalUrl: response.url,