diff --git a/app/logout/route.ts b/app/logout/route.ts index b9aedc3..b4aa56f 100644 --- a/app/logout/route.ts +++ b/app/logout/route.ts @@ -8,5 +8,11 @@ export async function POST(request: Request) { } const supabase = await createClient(); await supabase.auth.signOut(); - return NextResponse.redirect(new URL("/login", request.url), { status: 303 }); + // Relative Weiterleitung: bei einer absoluten URL aus request.url landet + // sonst die Server-Bindung (0.0.0.0) statt des aufgerufenen Hosts im + // Location-Header. + return new NextResponse(null, { + status: 303, + headers: { Location: "/login" }, + }); } diff --git a/proxy.ts b/proxy.ts index cb5e67a..734d90f 100644 --- a/proxy.ts +++ b/proxy.ts @@ -31,10 +31,14 @@ export async function proxy(request: NextRequest) { } = await supabase.auth.getUser(); if (!user) { - const url = request.nextUrl.clone(); - url.pathname = "/login"; - url.search = ""; - return NextResponse.redirect(url); + // Absolute URL aus dem Host-Header des Browsers bauen: request.nextUrl + // trägt bei "-H 0.0.0.0" die Server-Bindung statt des aufgerufenen + // Hosts, und relative Location-Header lehnt die Middleware ab. + const host = request.headers.get("host") ?? request.nextUrl.host; + const proto = + request.headers.get("x-forwarded-proto") ?? + request.nextUrl.protocol.replace(":", ""); + return NextResponse.redirect(`${proto}://${host}/login`, 303); } return response;