diff --git a/packages/server/src/cli.ts b/packages/server/src/cli.ts index 629a961d97cb..eed975ff5ff4 100644 --- a/packages/server/src/cli.ts +++ b/packages/server/src/cli.ts @@ -273,6 +273,7 @@ const bold = (text: string | number): string | number => { }, }, password, + port, httpsOptions: hasCustomHttps ? { key: certKeyData, cert: certData, diff --git a/packages/server/src/server.ts b/packages/server/src/server.ts index b7d9a12cdbee..2c744da844c7 100644 --- a/packages/server/src/server.ts +++ b/packages/server/src/server.ts @@ -28,6 +28,7 @@ interface CreateAppOptions { registerMiddleware?: (app: express.Application) => void; serverOptions?: ServerOptions; password?: string; + port?: number; httpsOptions?: https.ServerOptions; allowHttp?: boolean; bypassAuth?: boolean; @@ -197,6 +198,12 @@ export const createApp = async (options: CreateAppOptions): Promise<{ ): void => { const currentUrl = `${protocol}://${req.headers.host}${req.originalUrl}`; const newUrl = url.parse(currentUrl); + if (newUrl.port == null && protocol === "https" && options.port === 80) { + // Fix for https redirect on default port. The redirect would go to a URL without a port, so the + // browser would assume that it's redirecting to port 443. + newUrl.host += `:${options.port}`; + newUrl.port = "" + options.port; + } if (from && newUrl.pathname) { newUrl.pathname = newUrl.pathname.replace(new RegExp(`\/${from}\/?$`), "/"); }