Erweiterungen für Web-App-Bereiche

Ab Chrome 122 können Sie den Ursprungstest für das App-Manifestmitglied scope_extensions abonnieren. Dadurch können Websites, die mehrere Subdomains und Top-Level-Domains steuern, als eine einzelne Web-App präsentiert werden. In diesem Dokument wird erläutert, warum das Chrome-Team diese Funktion einführt und wann Sie sie verwenden sollten.

Überblick

Einige Webanwendungen haben mehrere Ursprünge, z. B. example.com als Haupt-App und dann space_1.example.com, ..., space_n.example.com, manchmal in Kombination mit special-example.com als Unterfunktionen unter dem Dach der Haupt-App. Diese Art von Websitearchitektur hat im Kontext progressiver Web-Apps Auswirkungen. Zu den Einschränkungen gehört es, dass Sie Service Worker, jegliche Art von Gerät, lokalen Speicher und Berechtigungen nicht ursprungsübergreifend freigeben können. Außerdem wird bei der ursprungsübergreifenden Navigation in einer eigenständigen PWA eine Fenster-UI („out of scope“-Leiste) angezeigt, die darauf hinweist, dass der Nutzer die PWA verlassen hat. In den Artikeln Progressive Web-Apps auf Multi-Ursprungswebsites und Mehrere progressive Web-Apps auf derselben Domain erstellen erfahren Sie, wie Sie einige dieser Probleme umgehen können.

Mit der Scope Extensions API können Webanwendungen einige der Herausforderungen meistern, die die Same-Origin-Policy bei dieser Art von Website-Architektur mit sich bringt. Webanwendungen können ihren Bereich auf andere Ursprünge erweitern und so für eine einheitliche Nutzung sorgen, sofern eine Übereinstimmung zwischen dem primären Ursprung der Webanwendung und den zugehörigen Ursprüngen besteht.

Ziele

Das Hauptziel der Scope Extensions API ist es, dass sich Websites, die mehrere Subdomains und Top-Level-Domains steuern, bei der Webanwendungs-UI und der Linkerfassung als eine zusammenhängende Webanwendung verhalten sollen. Beispielsweise lässt sich die example.com-Website, die example.com.co.uk und support.example.com umfasst, so weit wie möglich wie eine einzelne Webanwendung verhalten.

Diagramm mit einer Haupt-PWA und zugehörigen untergeordneten Websitevarianten.

Durch Bereichserweiterungen können sich PWAs mit mehreren Ursprungs als zusammenhängende Webanwendung verhalten, wenn es um die Benutzeroberfläche von Web-Apps geht.

In der Praxis ergeben sich daraus zwei spezifischere Ziele:

  • Ursprungsübergreifende Navigation:Ermögliche Nutzern, zwischen verknüpften Ursprüngen zu wechseln, ohne die Nutzererfahrung zu beeinträchtigen. Dazu wird der Nutzer in der Fenster-UI darüber informiert, dass er die PWA verlässt.
  • Cross-origin-Linkerfassung:Webanwendungen können die Navigation der Nutzer zu Websites erfassen, mit denen sie verknüpft sind.

Ursprungsübergreifende Navigation im Umfang

Wenn Nutzer in einer eigenständigen PWA zwischen verschiedenen Ursprüngen wechseln, wird ihnen standardmäßig ein Fenster mit dem Hinweis angezeigt, dass sie die PWA verlassen. In Chrome besteht diese UI aus einer Leiste, die „außerhalb des Geltungsbereichs“ liegt, die die URL des neuen Ursprungs enthält. Dies stört die Nutzererfahrung, da Nutzer erwarten, weiterhin im selben Anwendungskontext navigieren zu müssen, nehmen aber möglicherweise wahr, dass sie aus diesem Anwendungskontext genommen werden.

Leiste außerhalb des Umfangs oben in einer eigenständigen PWA.

Leiste „Ausgeschlossen“ wird in Chrome angezeigt, wenn Nutzer in einer eigenständigen PWA zwischen verschiedenen Ursprüngen wechseln.

Mit Bereichserweiterungen wird die Fenster-UI nicht angezeigt, wenn Nutzer einen der verknüpften Ursprünge aufrufen. So wird die PWA als einheitliche Darstellung dargestellt.

Linkerfassung bezieht sich auf die Fähigkeit einer Anwendung, Links innerhalb ihres Geltungsbereichs zu erfassen. Wie dies implementiert wird, unterscheidet sich je nach Browser und Betriebssystem. In Chrome unter ChromeOS wird beispielsweise bei Links im Bereich einer installierten PWA standardmäßig ein Browsertab geöffnet. In der Adressleiste wird darauf hingewiesen, dass eine App diese Links verarbeiten kann. Nutzer können dann die automatische Linkerfassung aktivieren.

Omnibar-Prompt für eine installierte PWA.

Fragment der Chrome-Adressleiste für einen Tab in ChromeOS. Es zeigt einen visuellen Hinweis darauf, dass der Link von einer PWA verarbeitet werden kann, und die Option, sich diese Entscheidung zu merken.

Wenn ein Nutzer auf einen Link klickt, der außerhalb des Geltungsbereichs der PWA liegt (einschließlich Links zu Subdomains oder Domains der obersten Ebene), wird er nicht als zu dieser PWA gehörig erkannt. Links werden beispielsweise in einem Browsertab geöffnet, ohne dass der Nutzer darauf hinweist, dass eine App vorhanden ist, die den Link verarbeiten kann. Mit der Scope Extensions API kann der Bereich der PWA erweitert werden, sodass die zugehörigen Ursprünge als Links behandelt werden, die unter die Vorgaben fallen.

Implementierung

Zum Implementieren von Bereichserweiterungen muss die Beziehung zwischen dem Hauptursprung und den verknüpften Ursprüngen hergestellt werden.

Liste der zugehörigen Ursprünge deklarieren

Fügen Sie der PWA-Hauptquelle ein Manifest-Mitglied der Web-App scope_extensions hinzu, damit die Web-App ihren Bereich auf andere Ursprünge erweitern kann.

Web-App-Manifest (https://beispiel.de)

{
  "name": "Example",
  "display": "standalone",
  "start_url": "/index.html",
  "scope_extensions": [
    { "origin": "https://*.example.com" },
    { "origin": "https://example.co.uk" },
    { "origin": "https://*.example.co.uk" }
  ]
}

Verknüpfungen bestätigen

Jeder der aufgeführten Ursprünge bestätigt die Verknüpfung mit der Web-App mithilfe einer /.well-known/web-app-origin-association-Konfigurationsdatei. Die Datei muss den Namen web-app-origin-association haben und an diesem genauen Speicherort bereitgestellt werden, da sie ein bekannter URI ist.

/.well-known/web-app-origin-association (verknüpfte Quelle)

{
  "web_apps": [{ "web_app_identity": "https://example.com" }]
}

Demo

Die Demo besteht aus zwei Websites:

Für die folgenden Tests müssen Sie das Flag about://flags/#enable-desktop-pwas-scope-extensions aktivieren, das ab Chrome-Version 115 verfügbar ist.

Ursprungsübergreifende Navigation testen

Öffnen Sie als Voraussetzung für diese Tests die Haupt-PWA in einem Browser, installieren Sie sie als PWA und öffnen Sie sie, um sie im eigenständigen Modus auszuführen. Die PWA enthält Links zu einem Ursprung im erweiterten Bereich und zu einem Ursprung außerhalb des erweiterten Bereichs.

PWA-Hauptfenster mit Links zum Geltungsbereich und zum erweiterten Geltungsbereich.

Demo-PWA mit Links zum Ursprung im erweiterten Bereich und Ursprung nicht im erweiterten Bereich.

Standardmäßige ursprungsübergreifende Navigation (nicht im erweiterten Bereich)

  1. Klicken Sie innerhalb der Vollbild-PWA auf den Link zum Ursprung nicht im erweiterten Bereich.
  2. Daraufhin erfolgt die Navigation und die Leiste außerhalb des Geltungsbereichs wird angezeigt.

PWA-Hauptfenster mit Leiste „Ausgeschlossen“, nachdem Sie auf den Link „Ausgeschlossen“ geklickt haben.

Leiste „Außerhalb des Bereichs“ wird standardmäßig für eine ursprungsübergreifende Navigation für eine PWA im eigenständigen Modus angezeigt.

Ursprungsübergreifende Navigation mit Bereichserweiterungen (im erweiterten Bereich)

  1. Gehen Sie zurück zur Startseite der PWA.
  2. Klicken Sie auf den Link zu Ursprung nicht im erweiterten Bereich.
  3. Standardmäßig sollte eine Leiste „außerhalb des Kompetenzbereichs“ angezeigt werden, aufgrund der Verknüpfung von Bereichserweiterungen ist dies jedoch nicht der Fall.

PWA-Hauptfenster ohne Leiste außerhalb des Geltungsbereichs, nachdem auf den Link für den erweiterten Bereich geklickt wurde.

Die Leiste „Ausgeschlossen“ wird in der ursprungsübergreifenden Navigation nicht angezeigt, nachdem eine Ursprungsverknüpfung mit Bereichserweiterungen vorgenommen wurde.

  1. Öffnen und installieren Sie die Haupt-PWA auf einem ChromeOS-Gerät.
  2. Klicke auf den folgenden Link: Verknüpfter Ursprung.
  3. Der Link wird in einem neuen Browsertab geöffnet und eine Aufforderung zum Öffnen des Links in der installierten PWA angezeigt.

Omnibar-Prompt für eine installierte PWA mit erweitertem Bereich.

Wenn Nutzer auf einen Link zu dem mit einer PWA verknüpften Ursprung klicken, wird der Link in einem neuen Tab geöffnet. Außerdem wird das Symbol „In App öffnen“ angezeigt, über das der Nutzer der automatischen Linkerfassung zustimmen kann.

Ursprungstest

Wenn Sie diese API in Ihrer Anwendung mit echten Nutzern in der Anwendung testen möchten, ist dies mit einem Ursprungstest möglich. Mit Ursprungstests können Sie experimentelle Funktionen mit Ihren Nutzern testen. Dazu fordern Sie ein Testtoken an, das mit Ihrer Domain verknüpft ist. Sie können Ihre Anwendung dann bereitstellen und erwarten, dass sie in einem Browser funktioniert, der die von Ihnen getestete Funktion unterstützt. In diesem Fall ist sie in Chrome von 121 bis 126 verfügbar. Füllen Sie das Antragsformular aus, um ein eigenes Token für einen Ursprungstest zu erhalten.

Feedback

Das Chrome-Team freut sich über Feedback zur Nützlichkeit dieser API. Um das Team bei der Weiterentwicklung dieser API mit Feedback zu ihrer Nützlichkeit und neuen Anwendungsfällen zu unterstützen, die in der aktuellen Version nicht behandelt werden, kannst du ein Problem auf GitHub öffnen.

Zusätzliche Ressourcen

Danksagungen

Wir danken ganz besonders dem Team, das an der Entwicklung dieser API beteiligt ist. Die Bereichserweiterungen wurden von Alan Cutter und Lu Huang in Zusammenarbeit mit Matt Giuca festgelegt. Die API wurde von Alan Cutter von Google Chrome und Hassan Talat, Kristin Lee und Lu Huang von Microsoft Edge implementiert.