From 56c447920be8ddaab17bd40a40be01f1a28d5e2d Mon Sep 17 00:00:00 2001 From: beiyonder <86228410+beiyonder@users.noreply.github.com> Date: Wed, 20 May 2026 01:40:20 +0530 Subject: [PATCH] fix: preserve forwarded host --- src/proxy-client.spec.ts | 2 +- src/proxy-client.ts | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/proxy-client.spec.ts b/src/proxy-client.spec.ts index 647f3e9..5dc7d66 100644 --- a/src/proxy-client.spec.ts +++ b/src/proxy-client.spec.ts @@ -118,7 +118,7 @@ describe('ProxyClient', () => { expect(receivedHeaders['x-forwarded-for']).toBeDefined(); expect(receivedHeaders['x-forwarded-proto']).toBeDefined(); - expect(receivedHeaders['x-forwarded-host']).toBeDefined(); + expect(receivedHeaders['x-forwarded-host']).toBe('localhost:3000'); }); test('should modify headers via modifyHeaders callback', async () => { diff --git a/src/proxy-client.ts b/src/proxy-client.ts index 224a6d5..c5148c4 100644 --- a/src/proxy-client.ts +++ b/src/proxy-client.ts @@ -52,6 +52,7 @@ export class ProxyClient { headers[key] = Array.isArray(value) ? value.join(', ') : value; } } + const host = headers.host || ''; // Remove host header to avoid conflicts delete headers.host; @@ -63,7 +64,7 @@ export class ProxyClient { const forwarded = headers['x-forwarded-for'] || req.socket.remoteAddress || ''; modifiedHeaders['x-forwarded-for'] = forwarded; modifiedHeaders['x-forwarded-proto'] = 'https' in req.socket ? 'https' : 'http'; - modifiedHeaders['x-forwarded-host'] = headers.host || ''; + modifiedHeaders['x-forwarded-host'] = host; // Prepare request body if present let body: Buffer | undefined;