Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

PushManager: Statische Eigenschaft supportedContentEncodings

Baseline 2025
Neu verfügbar

Seit Januar 2025 funktioniert diese Funktion auf aktuellen Geräten und in aktuellen Browserversionen. Auf älteren Geräten oder in älteren Browsern funktioniert sie möglicherweise nicht.

Sicherer Kontext: Diese Funktion ist nur in sicheren Kontexten (HTTPS) in einigen oder allen unterstützenden Browsern verfügbar.

Hinweis: Diese Funktion ist in Web Workers verfügbar.

Die schreibgeschützte statische Eigenschaft supportedContentEncodings des PushManager-Interfaces gibt ein Array unterstützter Inhaltskodierungen zurück, die zum Verschlüsseln der Nutzdaten einer Push-Nachricht verwendet werden können.

User Agents müssen die in RFC 8291 definierte Inhaltskodierung aes128gcm unterstützen. Sie können auch Inhaltskodierungen aus früheren Versionen der Spezifikation unterstützen. Das zurückgegebene Array ist eingefroren und kann vom Empfänger nicht verändert werden.

Der Anwendungsserver benötigt diese Kodierung, um Push-Nachrichten vor dem Senden an den Push-Server zu verschlüsseln. Der Anwendungsserver gibt die für die Verschlüsselung verwendete Kodierung außerdem im HTTP-Header-Feld Content-Encoding jeder Push-Nachricht an.

Die Spezifikation legt nicht fest, wie der Client-Code die unterstützten Kodierungen oder die ebenfalls zum Verschlüsseln und Senden einer Push-Nachricht benötigten Informationen aus der PushSubscription an den Anwendungsserver übermitteln soll. Ein möglicher Ansatz ist im folgenden Abschnitt mit Beispielen dargestellt.

Wert

Ein Array von Zeichenfolgen. Es enthält üblicherweise nur einen Wert: "aes128gcm".

Ausnahmen

TypeError

Wird ausgelöst, wenn versucht wird, einen Wert im zurückgegebenen Array zu setzen.

Beispiele

Kodierungsinformationen an den Server senden

Push-Nachrichten werden auf dem Anwendungsserver für die Übermittlung an den Push-Server verschlüsselt und vom Browser entschlüsselt, bevor sie an den Service Worker der Anwendung weitergegeben werden. Die verwendeten öffentlichen und privaten Schlüssel werden vom Browser erzeugt. Nur der öffentliche Schlüssel und ein zugehöriges Geheimnis werden mit der Webanwendung und damit dem Anwendungsserver geteilt. So bleiben Push-Nachrichten vertraulich, während sie die Infrastruktur des Push-Servers durchlaufen.

Der öffentliche Schlüssel p256dh und das Geheimnis auth, die zum Verschlüsseln der Nachricht verwendet werden, werden dem Service Worker über seine Push-Subscription mithilfe der Methode PushSubscription.getKey() bereitgestellt. Der Ziel-Endpunkt für das Senden von Push-Nachrichten steht in PushSubscription.endpoint. Die für die Verschlüsselung zu verwendende Kodierung wird von supportedContentEncodings bereitgestellt.

Diese Informationen können über einen beliebigen Mechanismus an den Anwendungsserver gesendet werden. Ein Ansatz besteht darin, die benötigten Informationen aus PushSubscription und supportedContentEncodings in einem JSON-Objekt zusammenzufassen, es mit JSON.stringify() zu serialisieren und das Ergebnis an den Anwendungsserver zu senden.

js
// Get a PushSubscription object
const pushSubscription =
  await serviceWorkerRegistration.pushManager.subscribe();

// Create an object containing the information needed by the app server
const subscriptionObject = {
  endpoint: pushSubscription.endpoint,
  keys: {
    p256dh: pushSubscription.getKeys("p256dh"),
    auth: pushSubscription.getKeys("auth"),
  },
  encoding: PushManager.supportedContentEncodings,
  /* other app-specific data, such as user identity */
};

// Stringify the object and post to the app server
fetch("https://example.com/push/", {
  method: "POST",
  body: JSON.stringify(pushSubscription),
});

Spezifikationen

Spezifikation
Push API
# dom-pushmanager-supportedcontentencodings

Browser-Kompatibilität