PushManager: supportedContentEncodings statische Eigenschaft
Baseline 2023Newly 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.
// 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 |