From 32594c2dd82c2e7547bdf2856a913d5a9250e0b0 Mon Sep 17 00:00:00 2001 From: Florian Wilde Date: Fri, 17 Jul 2026 23:53:12 +0200 Subject: [PATCH] =?UTF-8?q?Fix:=20Weiterleitungen=20=C3=BCbernehmen=20nich?= =?UTF-8?q?t=20mehr=20die=20Server-Bindung=200.0.0.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Nach dem Abmelden landete man auf 0.0.0.0:3000, weil die absolute Redirect-URL aus request.url gebaut wurde und dort seit der Bindung an 0.0.0.0 die Server-Adresse statt des aufgerufenen Hosts steht. Logout leitet jetzt relativ weiter; der Proxy baut die URL aus dem Host-Header des Browsers (inkl. x-forwarded-proto hinter Proxies). --- app/logout/route.ts | 8 +++++++- proxy.ts | 12 ++++++++---- 2 files changed, 15 insertions(+), 5 deletions(-) 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;