20 lines
652 B
TypeScript
20 lines
652 B
TypeScript
import { NextRequest } from "next/server";
|
|
|
|
export function getRequestBaseUrl(request: NextRequest) {
|
|
const configured = process.env.APP_URL?.trim();
|
|
if (configured) {
|
|
return new URL(configured);
|
|
}
|
|
|
|
const forwardedHost = request.headers.get("x-forwarded-host");
|
|
const forwardedProto = request.headers.get("x-forwarded-proto");
|
|
const host = forwardedHost?.split(",")[0]?.trim() || request.headers.get("host") || request.nextUrl.host;
|
|
const proto = (forwardedProto?.split(",")[0]?.trim() || request.nextUrl.protocol || "http").replace(":", "");
|
|
|
|
if (!host) {
|
|
return request.nextUrl;
|
|
}
|
|
|
|
return new URL(`${proto}://${host}`);
|
|
}
|