scope_extensions
Experimentell: Dies ist eine experimentelle Technologie
Überprüfen Sie die Browser-Kompatibilitätstabelle sorgfältig vor der Verwendung auf produktiven Webseiten.
Das scope_extensions
Manifestmitglied wird verwendet, um den Geltungsbereich einer Web-App zu erweitern, sodass andere Ursprünge eingeschlossen werden. Dadurch können mehrere Domains als eine einzige Web-App dargestellt werden.
Syntax
"scope_extensions": [
{ "type": "origin", "origin": "https://support.example.com"},
{ "type": "origin", "origin": "https://shop.example.com"},
{ "type": "origin", "origin": "https://example.de"},
{ "type": "origin", "origin": "https://example.co.uk"}
]
Werte
scope_extensions
-
Ein Array von Objekten, die jeweils die folgenden Eigenschaften enthalten:
Beschreibung
Das scope_extensions
Manifestmitglied kann den Geltungsbereich einer Web-App erweitern, um andere Ursprünge einzuschließen. Typische Anwendungsfälle sind:
- Verschiedene Subdomains für Inhalte oder Funktionalitäten, beispielsweise
https://support.example.com
,https://shop.example.com
,https://maps.example.com
,https://auth.example.com
. - Verschiedene Subdomains für Sprache/Region, beispielsweise
https://uk.example.com
,https://de.example.com
,https://jp.example.com
,https://no.example.com
. - Verwandte unabhängige Domains, beispielsweise
https://example.jp
,https://my-example.com
,https://my-partner-site.com
,https://example.slack.com
.
Die Haupt-Web-App (beispielsweise https://example.com
) muss die Ursprünge, die sie in ihren Geltungsbereich einbeziehen möchte, in ihrem scope_extensions
Manifestmitglied aufführen:
"scope_extensions": [
{ "type": "origin", "origin": "https://example.jp"},
{ "type": "origin", "origin": "https://my-example.com"},
{ "type": "origin", "origin": "https://my-partner-site.com"},
{ "type": "origin", "origin": "https://example.slack.com"}
]
Opt-in über eine .well-known Datei
Um der Assoziation beizutreten, müssen die Seiten, deren Ursprünge im scope_extensions
Manifestmitglied der Web-App als im Geltungsbereich angegeben sind, eine .well-known Datei namens web-app-origin-association
unter der relativen URL /.well-known/web-app-origin-association
enthalten. Diese muss eine JSON-Struktur enthalten, die mindestens eine Eigenschaft umfasst, deren Schlüssel den id
Manifestmitgliedern derjenigen Web-Apps entspricht, deren Geltungsbereich die Seite einbeziehen möchte.
Beispiel:
{
"https://example.com": {
"scope": "/"
},
"https://beta.example.com": {
"scope": "/"
}
}
Der Wert jeder Eigenschaft ist ein Objekt, das eine scope
-Eigenschaft mit einem Wert enthält, der den genauen Pfad angibt, der im Geltungsbereich der verweisenden Web-App liegt.
Hinweis: Es ist nicht möglich, unterschiedliche Geltungsbereiche für dieselbe Web-App anzugeben — Sie können nicht mehrere Einträge für denselben Schlüssel einfügen.
Wirkung von scope_extensions
Sobald die Ursprünge, die im scope_extensions
der Web-App enthalten sind, erfolgreich beigetreten sind, können Sie zu Orten innerhalb des Geltungsbereichs dieser Ursprünge verlinken. Wenn die Links gefolgt werden, erscheinen die Orte im App-Fenster genauso wie Orte im eigenen Geltungsbereich der Web-App.
Wenn Sie einem Link zu einem Ort folgen, der nicht im Geltungsbereich der Web-App liegt, erscheint er als externer Ort, wie erwartet.
Beispiele
Betrachten Sie eine Beispiel-Web-App unter https://example.com/app
:
{
"id": "https://example.com/app",
"name": "My App",
"icons": [
{
"src": "icon/hd_hi",
"sizes": "128x128"
}
],
"start_url": "/app/index.html",
"scope": "/app",
"display": "standalone",
"scope_extensions": [
{ "type": "origin", "origin": "https://example.co.uk" },
{ "type": "origin", "origin": "https://help.example.com" }
]
}
Um in den Geltungsbereich der App einzutreten, müssten https://example.co.uk
und https://help.example.com
eine /.well-known/web-app-origin-association
enthalten, die folgendermaßen aussieht:
{
"https://example.com/app": {
"scope": "/"
}
}
Hinweis: Siehe Scope Extensions API Demo für ein funktionierendes Beispiel.
Spezifikationen
Specification |
---|
Manifest Incubations # scope_extensions-member |
Browser-Kompatibilität
Siehe auch
scope
Manifestmitglied