From 1b8274d5378f3628a45c362f44a690710a1027ce Mon Sep 17 00:00:00 2001 From: Ryan Clark Date: Thu, 23 Jan 2025 09:06:40 +0100 Subject: [PATCH 1/2] Allow custom domains in Vite's allowedHosts --- web/packages/build/vite/config.ts | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/web/packages/build/vite/config.ts b/web/packages/build/vite/config.ts index 9521631ddf189..86f118abcc408 100644 --- a/web/packages/build/vite/config.ts +++ b/web/packages/build/vite/config.ts @@ -54,15 +54,10 @@ export function createViteConfig( } } - const targetHostname = - target !== DEFAULT_PROXY_TARGET - ? new URL(`http://${target}`).hostname - : undefined; - const config: UserConfig = { clearScreen: false, server: { - allowedHosts: targetHostname ? [`.${targetHostname}`] : [], + allowedHosts: resolveAllowedHost(target), fs: { allow: [rootDirectory, '.'], }, @@ -172,6 +167,7 @@ export function createViteConfig( secure: false, }, }; + if (process.env.VITE_HTTPS_KEY && process.env.VITE_HTTPS_CERT) { config.server.https = { key: readFileSync(process.env.VITE_HTTPS_KEY), @@ -200,6 +196,20 @@ export function createViteConfig( }); } +function resolveAllowedHost(target: string) { + if (process.env.VITE_HOST) { + return [process.env.VITE_HOST]; + } + + if (target !== DEFAULT_PROXY_TARGET) { + const { hostname } = new URL(`http://${target}`); + + return [hostname]; + } + + return []; +} + function resolveTargetURL(url: string) { if (!url) { return; From 0e8e3562b9cf1bad0027678473f447b49c0e01f6 Mon Sep 17 00:00:00 2001 From: Ryan Clark Date: Thu, 23 Jan 2025 12:16:41 +0100 Subject: [PATCH 2/2] Allow both VITE_HOST and the target to be allowedHosts --- web/packages/build/vite/config.ts | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/web/packages/build/vite/config.ts b/web/packages/build/vite/config.ts index 86f118abcc408..dec8a64bb7581 100644 --- a/web/packages/build/vite/config.ts +++ b/web/packages/build/vite/config.ts @@ -57,7 +57,7 @@ export function createViteConfig( const config: UserConfig = { clearScreen: false, server: { - allowedHosts: resolveAllowedHost(target), + allowedHosts: resolveAllowedHosts(target), fs: { allow: [rootDirectory, '.'], }, @@ -196,18 +196,22 @@ export function createViteConfig( }); } -function resolveAllowedHost(target: string) { +function resolveAllowedHosts(target: string) { + const allowedHosts = new Set(); + if (process.env.VITE_HOST) { - return [process.env.VITE_HOST]; + const { hostname } = new URL(`https://${process.env.VITE_HOST}`); + + allowedHosts.add(hostname); } if (target !== DEFAULT_PROXY_TARGET) { - const { hostname } = new URL(`http://${target}`); + const { hostname } = new URL(`https://${target}`); - return [hostname]; + allowedHosts.add(hostname); } - return []; + return Array.from(allowedHosts); } function resolveTargetURL(url: string) {