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