Diagnose: Volltest mit echtem Ausweis
Ein 401 ohne Anmeldung beweist nur, dass die Adresse existiert -- nicht, dass die Antwort auch bei ANGEMELDETEM Zugriff kommt. Genau dort blieb die Verwaltung stehen. Die Diagnose geht jetzt denselben Weg wie die Verwaltung: Ausweis von der Zugangswand holen, damit die Einstellungen abrufen, Zeit messen. Mit eigenem Zeitlimit von 12 Sekunden, damit die Diagnose nicht selbst haengt, wenn die Adresse haengt -- ein Pruefwerkzeug, das am selben Problem scheitert, ist wertlos. Damit ist der Befund eindeutig statt vermutet: entweder 'Erfolgreich in X ms', oder eine Statusnummer samt Antworttext, oder 'KEINE Antwort innerhalb von 12 Sekunden'.
This commit is contained in:
@@ -246,6 +246,64 @@ code { background: rgba(127,208,232,.1); padding: .1rem .35rem; border-radius: 5
|
||||
zeile("bad", "Zahlungen-Bereich", "Nicht erreichbar: " + (e.message || ""));
|
||||
}
|
||||
|
||||
/* 4b. DER ENTSCHEIDENDE TEST: derselbe Ablauf wie in der Verwaltung,
|
||||
mit einem echten Ausweis.
|
||||
|
||||
Ein 401 ohne Anmeldung beweist nur, dass die Adresse existiert.
|
||||
Es beweist NICHT, dass die Antwort auch dann kommt, wenn man
|
||||
angemeldet ist -- und genau dort blieb die Verwaltung stehen.
|
||||
|
||||
Deshalb hier der volle Weg: Ausweis holen, damit die Einstellungen
|
||||
abrufen, Zeit messen. Bricht es ab, steht hier die Ursache. */
|
||||
try {
|
||||
var t1 = Date.now();
|
||||
var aw = await fetch("/webdesign/api-ausweis", { cache: "no-store" });
|
||||
var awMs = Date.now() - t1;
|
||||
if (!aw.ok) {
|
||||
zeile("bad", "Ausweis für die Verwaltung",
|
||||
"Die Zugangswand gibt keinen aus (Status " + aw.status + "). "
|
||||
+ "Dann fragt die Verwaltung nach dem Code — das ist die Ursache.");
|
||||
} else {
|
||||
var awD = await aw.json();
|
||||
if (!awD.ausweis) {
|
||||
zeile("bad", "Ausweis für die Verwaltung",
|
||||
"Kein Ausweis" + (awD.grund ? " (" + awD.grund + ")" : "")
|
||||
+ ". Ohne ihn kann die Verwaltung keine Daten laden.");
|
||||
} else {
|
||||
zeile("gut", "Ausweis für die Verwaltung", "Erhalten in " + awMs + " ms.");
|
||||
|
||||
/* Jetzt der eigentliche Abruf -- mit eigenem Zeitlimit, damit
|
||||
die Diagnose nicht selbst haengt, wenn die Adresse haengt. */
|
||||
var abbruch = new AbortController();
|
||||
var wecker = setTimeout(function () { abbruch.abort(); }, 12000);
|
||||
var t2 = Date.now();
|
||||
try {
|
||||
var ein = await fetch(API + "/webdesign/admin/einstellungen", {
|
||||
headers: { Authorization: "Bearer " + awD.ausweis },
|
||||
cache: "no-store",
|
||||
signal: abbruch.signal,
|
||||
});
|
||||
var einMs = Date.now() - t2;
|
||||
var txt = await ein.text();
|
||||
if (ein.status === 200) {
|
||||
zeile("gut", "Einstellungen abrufen",
|
||||
"Erfolgreich in " + einMs + " ms (" + txt.length + " Zeichen Antwort).");
|
||||
} else {
|
||||
zeile("bad", "Einstellungen abrufen",
|
||||
"Status " + ein.status + " nach " + einMs + " ms. Antwort: " + txt.slice(0, 160));
|
||||
}
|
||||
} catch (e2) {
|
||||
zeile("bad", "Einstellungen abrufen",
|
||||
e2.name === "AbortError"
|
||||
? "KEINE Antwort innerhalb von 12 Sekunden — die Anfrage bleibt hängen."
|
||||
: "Fehlgeschlagen: " + (e2.message || e2.name));
|
||||
} finally { clearTimeout(wecker); }
|
||||
}
|
||||
}
|
||||
} catch (e) {
|
||||
zeile("bad", "Ausweis für die Verwaltung", "Nicht abrufbar: " + (e.message || ""));
|
||||
}
|
||||
|
||||
/* 5. Anmeldung im Browser vorhanden? */
|
||||
try {
|
||||
var tok = sessionStorage.getItem("wd-vw-token");
|
||||
|
||||
Reference in New Issue
Block a user