diff --git a/README.md b/README.md index d185d30..e152f0b 100644 --- a/README.md +++ b/README.md @@ -212,7 +212,10 @@ location / { ``` Dazu muss der Ursprung dieser App **in HoneyOS als App eingetragen** sein — die -Liste ist zugleich die CORS-Freigabe. +Liste ist zugleich die CORS-Freigabe. **Auf den Ursprung genau**: `localhost` und +`127.0.0.1` sind für den Browser zwei verschiedene, ebenso `http` und `https` +oder ein abweichender Port. Passt er nicht, erscheint die Leiste mit leerer +App-Liste und in der Konsole steht ein CORS-Fehler. **Warum `style-src 'unsafe-inline'`:** Die Leiste bringt ihre Stile mit, im Shadow DOM. Eine strenge CSP verbietet die — gemessen: die Leiste erscheint, @@ -228,6 +231,9 @@ aus. Ohne das erscheint dort keine Leiste, und in der Konsole steht nur `ERR_BLOCKED_BY_RESPONSE.NotSameOriginAfterDefaultedToSameOriginByCoep`. Das COEP der App bleibt dabei unangetastet — ihre eigenen Fähigkeiten also auch. +**Fertiges Beispiel:** [`beispiele/bentopdf/`](beispiele/bentopdf/) — Compose +und nginx-Konfiguration, so getestet. + **Nur Pangolin davor?** Traefik kann Antwortkörper nicht von sich aus ändern; dafür bräuchte es ein Plugin. Der kürzere Weg ist ein kleiner nginx *zwischen* Pangolin und der App, der nichts tut außer einsetzen: diff --git a/beispiele/bentopdf/docker-compose.yml b/beispiele/bentopdf/docker-compose.yml new file mode 100644 index 0000000..3410c3f --- /dev/null +++ b/beispiele/bentopdf/docker-compose.yml @@ -0,0 +1,35 @@ +# ───────────────────────────────────────────────────────────── +# BentoPDF mit HoneyOS-Leiste +# +# Aufbau: Pangolin → leiste (nginx) → bentopdf +# +# Der nginx tut nichts weiter, als beim Durchreichen einen '; + + # Falls die App eine eigene CSP schickt (BentoPDF tut es nicht), muss + # sie ersetzt werden — zwei CSP-Kopfzeilen heissen nicht „mehr erlaubt", + # sondern „beide müssen zustimmen". Dann diese zwei Zeilen einschalten: + # + # proxy_hide_header Content-Security-Policy; + # add_header Content-Security-Policy "default-src 'self'; script-src 'self' https://honeyos.duckdns.org; connect-src 'self' https://honeyos.duckdns.org; style-src 'self' 'unsafe-inline'; img-src 'self' data: blob:" always; + } +}