From 87c321fc554a4e96283ad3308ec1faa4a77c7423 Mon Sep 17 00:00:00 2001 From: Tom Milewski Date: Thu, 9 May 2024 17:57:39 -0400 Subject: [PATCH 1/3] fix(chrome-extension): Remove `origin` from API mutation request headers [SDK-1736] --- .changeset/modern-steaks-think.md | 5 +++++ packages/chrome-extension/src/singleton.ts | 4 ++++ 2 files changed, 9 insertions(+) create mode 100644 .changeset/modern-steaks-think.md diff --git a/.changeset/modern-steaks-think.md b/.changeset/modern-steaks-think.md new file mode 100644 index 00000000000..d85e79254c9 --- /dev/null +++ b/.changeset/modern-steaks-think.md @@ -0,0 +1,5 @@ +--- +'@clerk/chrome-extension': patch +--- + +Remove `origin` from API mutation request headers. diff --git a/packages/chrome-extension/src/singleton.ts b/packages/chrome-extension/src/singleton.ts index f2b297bf7ca..0c31d678dfb 100644 --- a/packages/chrome-extension/src/singleton.ts +++ b/packages/chrome-extension/src/singleton.ts @@ -76,6 +76,10 @@ export async function buildClerk({ const jwt = await storageCache.get(CACHE_KEY); (requestInit.headers as Headers).set('authorization', jwt || ''); + + if (requestInit.method !== 'GET') { + (requestInit.headers as Headers).delete('origin'); + } }); // Store updated JWT in StorageCache on Clerk responses From e59e733b1d0202fee3d1f5f89741056ac678a2f6 Mon Sep 17 00:00:00 2001 From: Tom Milewski Date: Fri, 10 May 2024 10:09:38 -0400 Subject: [PATCH 2/3] fix(chrome-extension): Remove `Origin` from API mutation request headers [SDK-1736] --- .changeset/modern-steaks-think.md | 2 +- packages/chrome-extension/src/index.ts | 35 +++++++++++++++++++--- packages/chrome-extension/src/singleton.ts | 4 --- 3 files changed, 32 insertions(+), 9 deletions(-) diff --git a/.changeset/modern-steaks-think.md b/.changeset/modern-steaks-think.md index d85e79254c9..0e46ce98395 100644 --- a/.changeset/modern-steaks-think.md +++ b/.changeset/modern-steaks-think.md @@ -2,4 +2,4 @@ '@clerk/chrome-extension': patch --- -Remove `origin` from API mutation request headers. +Remove `Origin` from API mutation request headers via `onInstalled` listener. diff --git a/packages/chrome-extension/src/index.ts b/packages/chrome-extension/src/index.ts index 1a134cf1f5f..8cd7644fe18 100644 --- a/packages/chrome-extension/src/index.ts +++ b/packages/chrome-extension/src/index.ts @@ -1,9 +1,36 @@ +// Override Clerk React error thrower to show that errors come from @clerk/chrome-extension +import { setErrorThrowerOptions } from '@clerk/clerk-react/internal'; +import type { DeclarativeNetRequest } from 'webextension-polyfill'; +import browser from 'webextension-polyfill'; + +setErrorThrowerOptions({ packageName: PACKAGE_NAME }); + +browser.runtime.onInstalled.addListener(() => { + const rules: DeclarativeNetRequest.Rule[] = [ + { + id: 654321, + action: { + type: 'modifyHeaders', + requestHeaders: [{ header: 'Origin', operation: 'remove' }], + }, + condition: { + initiatorDomains: [browser.runtime.id], + isUrlFilterCaseSensitive: true, + regexFilter: '.+(?|&)*_is_native=1.*', + requestMethods: ['post', 'put', 'delete'], + resourceTypes: ['xmlhttprequest'], + }, + }, + ]; + + void browser.declarativeNetRequest.updateDynamicRules({ + removeRuleIds: rules.map(r => r.id), + addRules: rules, + }); +}); + export * from '@clerk/clerk-react'; export type { StorageCache } from './utils/storage'; // The order matters since we want override @clerk/clerk-react ClerkProvider export { ClerkProvider } from './ClerkProvider'; - -// Override Clerk React error thrower to show that errors come from @clerk/chrome-extension -import { setErrorThrowerOptions } from '@clerk/clerk-react/internal'; -setErrorThrowerOptions({ packageName: PACKAGE_NAME }); diff --git a/packages/chrome-extension/src/singleton.ts b/packages/chrome-extension/src/singleton.ts index 0c31d678dfb..f2b297bf7ca 100644 --- a/packages/chrome-extension/src/singleton.ts +++ b/packages/chrome-extension/src/singleton.ts @@ -76,10 +76,6 @@ export async function buildClerk({ const jwt = await storageCache.get(CACHE_KEY); (requestInit.headers as Headers).set('authorization', jwt || ''); - - if (requestInit.method !== 'GET') { - (requestInit.headers as Headers).delete('origin'); - } }); // Store updated JWT in StorageCache on Clerk responses From 7aec5a28ad1dcbacd84b4b85d591d01c22125481 Mon Sep 17 00:00:00 2001 From: Tom Milewski Date: Fri, 10 May 2024 10:10:44 -0400 Subject: [PATCH 3/3] chore(chrome-extension): Loosen regex filter --- packages/chrome-extension/src/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/chrome-extension/src/index.ts b/packages/chrome-extension/src/index.ts index 8cd7644fe18..3c2350ba616 100644 --- a/packages/chrome-extension/src/index.ts +++ b/packages/chrome-extension/src/index.ts @@ -16,7 +16,7 @@ browser.runtime.onInstalled.addListener(() => { condition: { initiatorDomains: [browser.runtime.id], isUrlFilterCaseSensitive: true, - regexFilter: '.+(?|&)*_is_native=1.*', + regexFilter: '.+_is_native=1.*', requestMethods: ['post', 'put', 'delete'], resourceTypes: ['xmlhttprequest'], },