Abmelden fuehrte im Docker-Betrieb auf 0.0.0.0:3000 - eine Adresse, die kein Browser aufrufen kann. Ursache war hausgemacht: ENV HOSTNAME=0.0.0.0 aus #031 reparierte die Zustandspruefung und lenkte zugleich alle Weiterleitungen aus Server Actions dorthin, weil Next sie serverseitig absolut macht. Vorher stand dort der Containername - derselbe Fehler, nur unauffaelliger. Neuer Helfer eigenerPfad() baut die Adresse aus Einstellung, APP_URL oder den Kopfzeilen der Anfrage. Betroffen waren Abmelden, die Sitzungspruefung und das Loeschen eines Kunden. Zusaetzlich uebergeht oeffentlicheBasis() eine als Lausch-Adresse eingetragene APP_URL, statt sie zu uebernehmen. Gegen einen Docker-Stapel geprueft: Mit APP_URL=http://0.0.0.0:3000 leitet die Anwendung jetzt auf den tatsaechlich aufgerufenen Namen. Dazu #032: Das ct-Skript setzt die Herkunft der App-Skripte selbst, und die Speichervorgabe steht auf 4 GB. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
1.8 KiB
#033 Abmelden führte auf die Lausch-Adresse
Status: erledigt Meilenstein: v0.20.1 Labels: bug, deployment Geschätzt: 1 h Tatsächlich: 0 h 30 min
Auslöser
Im Docker-Betrieb führte Abmelden auf 0.0.0.0:3000/login – eine Adresse, die kein Browser
aufrufen kann (ERR_ADDRESS_INVALID).
Ursache
Hausgemacht, und zwar in #031: Für die Zustandsprüfung des Containers wurde ENV HOSTNAME=0.0.0.0
gesetzt, damit der Server auf allen Schnittstellen lauscht. Next.js macht eine Weiterleitung aus
einer Server Action aber serverseitig absolut und nimmt dafür genau diese Adresse. Vorher stand
dort der Containername (http://0a5963a591df:3000/) – derselbe Fehler, nur weniger auffällig.
Betroffen waren alle Weiterleitungen, die nicht über eine Request liefen: Abmelden, die Prüfung in
sitzungErforderlich und das Löschen eines Kunden.
Behebung
- Neuer Helfer
eigenerPfad()insrc/lib/adresse.ts: baut die Adresse aus Einstellung,APP_URLoder den Kopfzeilen der Anfrage – nie aus der Lausch-Adresse. oeffentlicheBasis()übergeht unbrauchbare Angaben (0.0.0.0,::) jetzt ausdrücklich, statt sie zu übernehmen. Eine falsch eingetragene Adresse macht das Dashboard damit nicht unbenutzbar.- Zwei zusätzliche Tests.
Prüfung
Gegen einen Docker-Stapel durchgespielt: Mit APP_URL=http://0.0.0.0:3000 in der .env – also der
Fehlkonfiguration – leitet die Anwendung jetzt auf den tatsächlich aufgerufenen Namen
(http://localhost:3003/login) statt auf die Lausch-Adresse.
Lehre
Der Fix für die Zustandsprüfung hat einen zweiten Fehler sichtbar gemacht, der vorher nur anders aussah. Weiterleitungen gehören grundsätzlich aus der konfigurierten Adresse gebaut, nicht aus dem, was der Server zufällig über sich selbst weiß.