Sicherheits-, Stabilitaets- und Domainkorrekturen nach vollstaendiger Pruefung
Build & Deploy / deploy (push) Waiting to run
Build & Deploy / deploy (push) Waiting to run
- Absturzsicherheit: Express 4 faengt Fehler aus async-Handlern nicht ab, eine einzige fehlerhafte Anfrage konnte den ganzen Shop beenden - besonders heikel bei capture-order, wo das direkt nach der PayPal-Abbuchung passieren wuerde. Neu: lib/async-wrap.js um alle Handler, zentraler Fehler-Handler in index.js, .catch(next) in der Zugangsschranke, unhandledRejection/uncaughtException-Netz. - Fehlerhaftes JSON lieferte bisher Express' HTML-Fehlerseite mit komplettem Stacktrace und Serverpfaden (weil NODE_ENV nicht gesetzt war). Jetzt saubere JSON-Antwort, NODE_ENV=production in .env.example ergaenzt. - Sicherheits-Header und x-powered-by wie bei der DogFather-Seite. - Falsche Domain .de statt .com korrigiert: astro.config.mjs (betraf alle Canonical-URLs und die komplette Sitemap), robots.txt, Layout.astro sowie den Verwaltungs-Link in jeder Bestellbenachrichtigung (war ein toter Link). - Fehlende Uebersetzung nav.cart in EN/CH/FR ergaenzt: das Warenkorb-Symbol hatte in drei von vier Sprachen keinen Namen fuer Screenreader.
This commit is contained in:
@@ -0,0 +1,16 @@
|
||||
/* =====================================================================
|
||||
lib/async-wrap.js — kleiner Helfer, ergänzt am 05.08.2026.
|
||||
|
||||
Warum es das braucht: Express 4 fängt Fehler aus `async`-Route-Handlern NICHT selbst ab. Eine
|
||||
abgelehnte Promise wird zu einer "unhandled rejection" — und Node beendet daraufhin den ganzen
|
||||
Prozess. Bei Cloudflare Pages war ein Fehler dagegen immer auf die eine betroffene Anfrage
|
||||
begrenzt; dort konnte ein einzelner Datenbankfehler niemals den Shop offline nehmen.
|
||||
|
||||
Besonders kritisch bei /api/paypal/capture-order: dort würde ein Absturz genau in dem Moment
|
||||
passieren, in dem das Geld bei PayPal bereits abgebucht wurde — die Kundin bekäme statt der
|
||||
sorgfältig formulierten "bitte NICHT erneut bezahlen"-Meldung nur einen Verbindungsabbruch.
|
||||
|
||||
`wrap()` leitet jeden Fehler stattdessen an den zentralen Fehler-Handler in index.js weiter.
|
||||
===================================================================== */
|
||||
|
||||
export const wrap = (fn) => (req, res, next) => Promise.resolve(fn(req, res, next)).catch(next);
|
||||
@@ -42,7 +42,7 @@ function bestellBenachrichtigungHtml({ bestellnummer, name, email, land, artikel
|
||||
<p><strong>Artikel:</strong></p>
|
||||
<ul>${artikelZeilen}</ul>
|
||||
<p><strong>Summe: ${formatPreis(summe)}</strong></p>
|
||||
<p><a href="https://vans-diy-bastelbedarf.de/verwaltung/">→ Zur Bestellverwaltung</a></p>
|
||||
<p><a href="https://vans-diy-bastelbedarf.com/verwaltung/">→ Zur Bestellverwaltung</a></p>
|
||||
</div>
|
||||
`;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user