feat(beispiel): die Leiste ueber die eigene Adresse der App ausliefern
Marcs BentoPDF-Image (ghcr.io/alam00000/bentopdf-simple) schickt eine strenge CSP — mit dem Image von Docker Hub, an dem ich zuerst geprueft hatte, war das nicht zu sehen. Statt fremde Kopfzeilen umzuschreiben, reicht der Einsetzer jetzt auch /honeybar/ und die zwei Abfragen der Leiste unter seiner eigenen Adresse durch. Damit ist fuer den Browser alles derselbe Ursprung: CSP unangetastet, kein CORS, kein COEP, und der Schluessel bleibt auf dem Server. Durchgereicht wird nur /api/apps und /api/weather, nur lesend. Ein pauschales /api/ haette die ganze Schnittstelle unter die Adresse der App gehaengt — beim Ausprobieren hat meine eigene Schreibprobe prompt die App-Liste geleert. Das Binden auf 127.0.0.1 ist raus: Es passt nur, wenn der Proxy auf demselben Wirt im Host-Netz laeuft, und nicht fuer Marcs Aufbau. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
d1cd20586f
commit
8f294e15db
4 files changed
+107
-54
No files matched your search
@@ -231,9 +231,30 @@ 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.
|
||||
|
||||
**Zwei Bauarten.** Die zweite ist die bessere, sobald die App eine eigene CSP
|
||||
schickt — und das tun die meisten:
|
||||
|
||||
| | Skript von HoneyOS | Skript über die eigene Adresse |
|
||||
|---|---|---|
|
||||
| CSP der App | muss ersetzt werden | **unangetastet** (`'self'` genügt) |
|
||||
| CORS | Ursprung muss eingetragen sein | entfällt |
|
||||
| COEP der App | braucht `Cross-Origin-Resource-Policy` | entfällt |
|
||||
| `HONEYOS_APPS_KEY` | steht im Quelltext der Seite | **bleibt auf dem Server** |
|
||||
| Aufwand | eine `sub_filter`-Zeile | drei `location`-Blöcke |
|
||||
|
||||
Bei der zweiten reicht der Einsetzer auch `/honeybar/` und die zwei Abfragen der
|
||||
Leiste durch, unter *seiner* Adresse. Für den Browser ist damit alles derselbe
|
||||
Ursprung, und die drei Hürden fallen auf einmal weg. Durchgereicht werden dabei
|
||||
**nur** `/api/apps` und `/api/weather`, und nur lesend (`limit_except GET`) —
|
||||
ein pauschales `/api/` hinge sonst die ganze HoneyOS-Schnittstelle unter die
|
||||
Adresse der App.
|
||||
|
||||
**Fertige Beispiele:**
|
||||
|
||||
- [`beispiele/bentopdf/`](beispiele/bentopdf/) — ein Dienst, kürzestmöglich.
|
||||
- [`beispiele/bentopdf/`](beispiele/bentopdf/) — ein Dienst, alles über die
|
||||
eigene Adresse. Geprüft mit `ghcr.io/alam00000/bentopdf-simple`, das eine
|
||||
strenge CSP und COEP mitbringt: Leiste, Apps und Wetter erscheinen, ohne dass
|
||||
an dessen Kopfzeilen etwas geändert wird.
|
||||
- [`beispiele/mehrere-apps/`](beispiele/mehrere-apps/) — **HoneyOS und ein
|
||||
Einsetzer für alle Dienste in einem Stapel.** Am Host erkennt nginx, welcher
|
||||
Dienst gemeint ist; eine neue App sind zwei Zeilen in den Tabellen oben in
|
||||
|
||||
Reference in new issue
Block a user