PushManager: supportedContentEncodings statische Eigenschaft

Baseline 2023
Newly available

Since March 2023, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.

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 supportedContentEncodings schreibgeschützte statische Eigenschaft des PushManager-Interfaces gibt ein Array von unterstützten Inhaltscodierungen zurück, die verwendet werden können, um die Nutzlast einer Push-Nachricht zu verschlüsseln.

Benutzeragenten müssen die aes128gcm Inhaltscodierung unterstützen, die in RFC 8291 definiert ist, und können auch Inhaltscodierungen aus früheren Versionen der Spezifikation unterstützen. Das zurückgegebene Array ist eingefroren und darf vom Empfänger nicht modifiziert werden.

Der Anwendungserver benötigt diese Codierung, um Push-Nachrichten zur Versendung an den Push-Server zu verschlüsseln. Die für die Verschlüsselung verwendete Codierung wird ebenfalls vom Anwendungsserver im Content-Encoding HTTP-Headerfeld jeder Push-Nachricht aufgenommen.

Die Spezifikation definiert nicht, wie der Client-Code dem Anwendungserver die unterstützten Codierungen oder die Informationen in der PushSubscription übermitteln soll, die er ebenfalls benötigt, um eine Push-Nachricht zu verschlüsseln und zu versenden. Ein Ansatz wird im Abschnitt Beispiele unten dargestellt.

Wert

Ein Array von Zeichenfolgen. Dies enthält normalerweise nur einen Wert: "aes128gcm".

Ausnahmen

TypeError

Dies wird ausgelöst, wenn versucht wird, einen Wert im zurückgegebenen Array festzulegen.

Beispiele

Übermittlung von Codierungsinformationen an den Server

Push-Nachrichten werden auf dem Anwendungserver verschlüsselt, um an den Push-Server gesendet zu werden, und vom Browser entschlüsselt, bevor sie dem Anwendung-Service-Worker übergeben werden. Die verwendeten öffentlichen und privaten Schlüssel werden vom Browser generiert, und nur der öffentliche Schlüssel und ein zugehöriges Geheimnis werden mit der Web-App und somit dem Anwendungserver geteilt. Dies stellt sicher, dass Push-Nachrichten privat bleiben, während sie die Infrastruktur des Push-Servers durchlaufen.

Der p256dh öffentliche Schlüssel und das auth Geheimnis, die zur Verschlüsselung der Nachricht verwendet werden, werden dem Service-Worker über seine Push-Subscription mithilfe der PushSubscription.getKey()-Methode zur Verfügung gestellt, zusammen mit dem Zielendpunkt für das Senden von Push-Nachrichten in PushSubscription.endpoint. Die Codierung, die für die Verschlüsselung verwendet werden soll, wird durch supportedContentEncodings bereitgestellt.

Diese Informationen können mit jedem Mechanismus an den Anwendungserver gesendet werden. Ein Ansatz besteht darin, die benötigten Informationen von PushSubscription und supportedContentEncodings in ein JSON-Objekt zu legen, es mit JSON.stringify() zu serialisieren und das Ergebnis an den Anwendungserver 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 an post to the app server
fetch("https://example.com/push/", {
  method: "POST",
  body: JSON.stringify(pushSubscription),
});

Spezifikationen

Specification
Push API
# dom-pushmanager-supportedcontentencodings

Browser-Kompatibilität