### fix: verbessere CORS-Handling im Caddy-Proxy
All checks were successful
Build and Publish Docker Images / build-and-push (., backend/services/mail/Dockerfile, mail-service, mail-service) (push) Successful in 5m47s
Build and Publish Docker Images / build-and-push (., config/docker/caddy/web-app/Dockerfile, web-app, web-app) (push) Successful in 3m55s

- **Caddyfile:** Hinzufügen des `defer`-Flags zur korrekten Verarbeitung von CORS-Headern.
- **UI:** Aktualisierung des Versionsmarkers auf `v2026-04-23.22 - CADDY DEFER CORS FIX`.
- **Docs:** Ergänzung der Analyse und Lösung für Version 22.
This commit is contained in:
Stefan Mogeritsch 2026-04-23 13:25:02 +02:00
parent 71aea3f41d
commit 03fa74abba
3 changed files with 14 additions and 14 deletions

View File

@ -17,27 +17,20 @@
encode gzip zstd encode gzip zstd
# Reverse Proxy: Plan-B leitet nur /api/mail an den Mail-Service weiter (kein API-Gateway nötig) # Reverse Proxy: Plan-B leitet nur /api/mail an den Mail-Service weiter
handle /api/mail/* { handle /api/mail/* {
# CORS Handshake direkt im Proxy abfangen (Plan-B radikal)
@options method OPTIONS
header @options {
Access-Control-Allow-Origin "https://app.mo-code.at"
Access-Control-Allow-Methods "GET, POST, PUT, DELETE, OPTIONS"
Access-Control-Allow-Headers "*"
Access-Control-Allow-Credentials "true"
Access-Control-Max-Age "3600"
}
respond @options 204
# CORS Header auch für die eigentlichen Antworten (GET/POST) setzen
header { header {
Access-Control-Allow-Origin "https://app.mo-code.at" Access-Control-Allow-Origin "https://app.mo-code.at"
Access-Control-Allow-Methods "GET, POST, PUT, DELETE, OPTIONS" Access-Control-Allow-Methods "GET, POST, PUT, DELETE, OPTIONS"
Access-Control-Allow-Headers "*" Access-Control-Allow-Headers "*"
Access-Control-Allow-Credentials "true" Access-Control-Allow-Credentials "true"
Access-Control-Max-Age "3600"
defer
} }
@options method OPTIONS
respond @options 204
reverse_proxy mail-service:8085 reverse_proxy mail-service:8085
} }

View File

@ -79,3 +79,10 @@ Die "Hallo Du!" Test-UI wurde durch produktive, fachlich korrekte Formulare erse
- OPTIONS-Requests werden nun sofort vom Proxy mit `204 No Content` und den korrekten CORS-Headern beantwortet. - OPTIONS-Requests werden nun sofort vom Proxy mit `204 No Content` und den korrekten CORS-Headern beantwortet.
- Damit wird sichergestellt, dass der Browser die Header erhält, noch bevor die Anfrage das Backend erreicht. - Damit wird sichergestellt, dass der Browser die Header erhält, noch bevor die Anfrage das Backend erreicht.
- **Status**: Versionsmarker auf v2026-04-23.21 aktualisiert. - **Status**: Versionsmarker auf v2026-04-23.21 aktualisiert.
### v2026-04-23.22 - CADDY DEFER CORS FIX
- **Analyse**: Die CORS-Blockade hielt an (v21). Die Fehlermeldung "No 'Access-Control-Allow-Origin' header" blieb bestehen.
- **Lösung**:
- Im `Caddyfile` wurde das `defer`-Flag für die Header-Direktive hinzugefügt. Dies stellt sicher, dass Caddy die CORS-Header erst ganz am Ende der Response-Verarbeitung setzt und sie nicht von anderen Direktiven (wie `reverse_proxy`) überschrieben werden können.
- Radikale Vereinfachung des CORS-Blocks im Caddyfile für maximale Zuverlässigkeit bei Preflight-Anfragen.
- **Status**: Versionsmarker auf v2026-04-23.22 aktualisiert.

View File

@ -124,7 +124,7 @@ fun MainAppContent() {
// Dezentraler Versions-Marker in der unteren rechten Ecke // Dezentraler Versions-Marker in der unteren rechten Ecke
Box(modifier = Modifier.fillMaxSize().padding(8.dp), contentAlignment = Alignment.BottomEnd) { Box(modifier = Modifier.fillMaxSize().padding(8.dp), contentAlignment = Alignment.BottomEnd) {
Text( Text(
text = "v2026-04-23.21 - CADDY CORS PROXY FIX", text = "v2026-04-23.22 - CADDY DEFER CORS FIX",
style = MaterialTheme.typography.labelSmall, style = MaterialTheme.typography.labelSmall,
color = Color.LightGray.copy(alpha = 0.5f) color = Color.LightGray.copy(alpha = 0.5f)
) )