Fix: Weiterleitungen übernehmen nicht mehr die Server-Bindung 0.0.0.0
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).
This commit is contained in:
+7
-1
@@ -8,5 +8,11 @@ export async function POST(request: Request) {
|
|||||||
}
|
}
|
||||||
const supabase = await createClient();
|
const supabase = await createClient();
|
||||||
await supabase.auth.signOut();
|
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" },
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -31,10 +31,14 @@ export async function proxy(request: NextRequest) {
|
|||||||
} = await supabase.auth.getUser();
|
} = await supabase.auth.getUser();
|
||||||
|
|
||||||
if (!user) {
|
if (!user) {
|
||||||
const url = request.nextUrl.clone();
|
// Absolute URL aus dem Host-Header des Browsers bauen: request.nextUrl
|
||||||
url.pathname = "/login";
|
// trägt bei "-H 0.0.0.0" die Server-Bindung statt des aufgerufenen
|
||||||
url.search = "";
|
// Hosts, und relative Location-Header lehnt die Middleware ab.
|
||||||
return NextResponse.redirect(url);
|
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;
|
return response;
|
||||||
|
|||||||
Reference in New Issue
Block a user