mirror of
https://github.com/ajnart/homarr.git
synced 2026-02-27 17:00:54 +01:00
27 lines
836 B
TypeScript
27 lines
836 B
TypeScript
import type { ReadonlyHeaders } from "next/dist/server/web/spec-extension/adapters/headers";
|
|
|
|
export const removeTrailingSlash = (path: string) => {
|
|
return path.at(-1) === "/" ? path.substring(0, path.length - 1) : path;
|
|
};
|
|
|
|
export const extractBaseUrlFromHeaders = (
|
|
headers: ReadonlyHeaders,
|
|
fallbackProtocol: "http" | "https" = "http",
|
|
): `${string}://${string}` => {
|
|
let protocol = headers.get("x-forwarded-proto");
|
|
|
|
// If the protocol is not set or an empty string
|
|
if (!protocol) {
|
|
protocol = fallbackProtocol;
|
|
}
|
|
|
|
// @see https://support.glitch.com/t/x-forwarded-proto-contains-multiple-protocols/17219
|
|
if (protocol.includes(",")) {
|
|
protocol = protocol.includes("https") ? "https" : "http";
|
|
}
|
|
|
|
const host = headers.get("x-forwarded-host") ?? headers.get("host");
|
|
|
|
return `${protocol}://${host}`;
|
|
};
|