From 847a8f3dac43bd322a23a077cf2f8d4785940b1b Mon Sep 17 00:00:00 2001 From: Peter Wong Date: Mon, 29 Jan 2024 17:21:38 -0800 Subject: [PATCH 1/4] Read the original Host header value from the request --- src/server/injectors/proxy-injector.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/server/injectors/proxy-injector.ts b/src/server/injectors/proxy-injector.ts index 1fc9550..36b85ab 100644 --- a/src/server/injectors/proxy-injector.ts +++ b/src/server/injectors/proxy-injector.ts @@ -208,7 +208,7 @@ export default class ProxyInjector implements KrasInjector { if (this.config.xfwd) { integrateXfwd(headers, protocol, req); - headers['x-forwarded-host'] = headers['x-forwarded-host'] || headers.host || ''; + headers['x-forwarded-host'] = headers['x-forwarded-host'] || req.headers.host || ''; } return headers; From 5644f65feb2eacf08edc49618cee922d5a441c3f Mon Sep 17 00:00:00 2001 From: Peter Wong Date: Mon, 29 Jan 2024 17:21:47 -0800 Subject: [PATCH 2/4] Update documentation --- docs/proxy-injector.md | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/docs/proxy-injector.md b/docs/proxy-injector.md index 4f38ab1..770eb6f 100644 --- a/docs/proxy-injector.md +++ b/docs/proxy-injector.md @@ -20,16 +20,18 @@ interface ProxyInjectorConfiguration { active?: boolean; agentOptions?: any; proxy?: any; + xfwd?: boolean; defaultHeaders?: Array; discardHeaders?: Array; permitHeaders?: Array; + injectHeaders?: Record; followRedirect?: boolean; } ``` The mapping is already a general configuration, as the targets need to be known as well as their usual counterparts (e.g., to identify the correct URLs in an HAR file). The `agentOptions` can be used to specify more sophisticated options for the proxyed request (e.g., which ciphers to use). The `proxy` option allows us to set a (corporate?) proxy to be used on the local machine (oh the irony - a proxy server that allows setting another proxy ...). -While the `defaultHeaders` provide a way to override the used default set of headers, `permitHeaders` are for explicitly allowing non-default headers and `discardHeaders` may be used to define which headers should never be considered. +While the `defaultHeaders` provide a way to override the used default set of headers, `permitHeaders` are for explicitly allowing non-default headers and `discardHeaders` may be used to define which headers should never be considered, and `injectHeaders` may be used to create or override headers with custom values. If not explicitly specified the default headers are defined to be: @@ -50,3 +52,11 @@ const defaultProxyHeaders = [ 'range', ]; ``` + +The `xfwd` option will create the following headers:| +- x-forwarded-for +- x-forwarded-host +- x-forwarded-port +- x-forwarded-proto + +and set the header values as derived from the original request. The `x-forwarded-host` header will contain the request's `host` header value, which may include a port number. From fd9ae256567698bb04f7e614323a7b2adc8513b9 Mon Sep 17 00:00:00 2001 From: Peter Wong Date: Mon, 29 Jan 2024 17:25:33 -0800 Subject: [PATCH 3/4] Update documentation --- docs/proxy-injector.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/proxy-injector.md b/docs/proxy-injector.md index 770eb6f..5f77c56 100644 --- a/docs/proxy-injector.md +++ b/docs/proxy-injector.md @@ -53,7 +53,7 @@ const defaultProxyHeaders = [ ]; ``` -The `xfwd` option will create the following headers:| +The `xfwd` option will create the following headers: - x-forwarded-for - x-forwarded-host - x-forwarded-port From 64d9fcccf9ec53b11d940f5e695a94ed44e3f5e5 Mon Sep 17 00:00:00 2001 From: Peter Wong Date: Mon, 29 Jan 2024 17:35:38 -0800 Subject: [PATCH 4/4] Update CHANGELOG --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4507c60..7e99bd6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Changelog +## 0.15.4 (tbd) + +- Fixed the `x-forwarded-host` header value + ## 0.15.3 - Added possibility to specify multiple headers or query parameters