PushManager: supportedContentEncodings statische Eigenschaft

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

Hinweis: Dieses Feature ist verfügbar in Web Workers.

Die schreibgeschützte statische Eigenschaft supportedContentEncodings der PushManager-Schnittstelle gibt ein Array von unterstützten Inhaltscodierungen zurück, die zur Verschlüsselung der Nutzlast einer Push-Nachricht verwendet werden können.

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

Der Anwendungsserver benötigt diese Codierung, um Push-Nachrichten für das Senden an den Push-Server zu verschlüsseln. Die für die Verschlüsselung verwendete Codierung wird vom App-Server auch im Content-Encoding HTTP-Header-Feld jeder Push-Nachricht angegeben.

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

Wert

Ein Array von Zeichenfolgen. Dieses enthält in der Regel nur einen Wert: "aes128gcm".

Ausnahmen

TypeError

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

Beispiele

Codierungsinformationen an den Server senden

Push-Nachrichten werden auf dem Anwendungsserver verschlüsselt, um sie an den Push-Server zu senden, und vom Browser entschlüsselt, bevor sie an den Anwendung-Service-Worker weitergeleitet werden. Die ö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 geteilt, und somit mit dem Anwendungsserver. Dies gewährleistet, 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-Abonnement mittels der Methode PushSubscription.getKey() bereitgestellt, zusammen mit dem Ziel-Endpunkt zum Senden von Push-Nachrichten in PushSubscription.endpoint. Die für die Verschlüsselung zu verwendende Codierung wird von supportedContentEncodings bereitgestellt.

Diese Informationen können dem Anwendungsserver über jeden beliebigen Mechanismus übermittelt werden. Ein Ansatz besteht darin, die benötigten Informationen aus PushSubscription und supportedContentEncodings in ein JSON-Objekt zu setzen, 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 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

BCD tables only load in the browser