diff --git a/packages/core/src/streams/proxifier.ts b/packages/core/src/streams/proxifier.ts index aa175be6..e800c14c 100644 --- a/packages/core/src/streams/proxifier.ts +++ b/packages/core/src/streams/proxifier.ts @@ -67,6 +67,19 @@ class Proxifier { if (streamsToProxy.length === 0) { return streams; } + + const normaliseHeaders = ( + headers: Record | undefined + ): Record | undefined => { + if (!headers) { + return undefined; + } + const normalisedHeaders: Record = {}; + for (const [key, value] of Object.entries(headers)) { + normalisedHeaders[key.trim().toLowerCase()] = value.trim(); + } + return normalisedHeaders; + }; logger.info(`Proxying ${streamsToProxy.length} streams`); const proxy = createProxy(this.userData.proxy); @@ -82,13 +95,13 @@ class Proxifier { } catch {} const headers = { - response: stream.responseHeaders, - request: stream.requestHeaders, + response: normaliseHeaders(stream.responseHeaders), + request: normaliseHeaders(stream.requestHeaders), }; if (parsedUrl && parsedUrl.username && parsedUrl.password) { headers.request = { ...headers.request, - Authorization: + authorization: 'Basic ' + Buffer.from( `${decodeURIComponent( diff --git a/packages/server/src/routes/api/proxy.ts b/packages/server/src/routes/api/proxy.ts index a118c0ab..5b59fc1a 100644 --- a/packages/server/src/routes/api/proxy.ts +++ b/packages/server/src/routes/api/proxy.ts @@ -327,7 +327,11 @@ router.all( const proxyAgent = useProxy ? getProxyAgent(Env.ADDON_PROXY![proxyIndex]) : undefined; - const headers = { ...clientHeaders, ...data.requestHeaders }; + const headers = Object.fromEntries( + Object.entries({ ...clientHeaders, ...data.requestHeaders }).map( + ([key, value]) => [key.toLowerCase(), value] + ) + ); if (urlObj.username && urlObj.password) { const basicAuth = Buffer.from( `${decodeURIComponent(urlObj.username)}:${decodeURIComponent(