PushManager: статическое свойство supportedContentEncodings
Базовая версия 2023
Новое
С марта 2023 года эта функция работает на последних устройствах и версиях браузеров. Возможно, эта функция не будет работать на более старых устройствах или браузерах.
Безопасный контекст: Эта функция доступна только в безопасных контекстах (HTTPS), в некоторых или во всех поддерживающих браузерах.
Примечание: Эта функция доступна в Web Workers.
Чтение только статического свойства supportedContentEncodings интерфейса PushManager возвращает массив поддерживаемых кодировок содержимого, которые могут использоваться для шифрования полезной нагрузки сообщения push.
Пользовательские агенты должны поддерживать кодировку содержимого aes128gcm , определенную в RFC 8291, и могут также поддерживать кодировки содержимого, определенные в предыдущих версиях спецификации. Возвращаемый массив заморожен и не может быть изменён получателем.
Приложению-серверу требуется эта кодировка для шифрования сообщений push перед отправкой на сервер push. Используемая кодировка шифрования также включается сервером приложения в поле HTTP-заголовка Content-Encoding каждого сообщения push.
Спецификация не определяет, как клиентскому коду следует отправить приложению-серверу поддерживаемые кодировки или информацию в PushSubscription, которая также необходима для шифрования и отправки сообщения push. Один из подходов показан в разделе примеров ниже.
Значение
Массив строк. Обычно он содержит только одно значение: "aes128gcm".
Исключения
TypeError-
Выбрасывается при попытке установить значение в возвращаемом массиве.
Примеры
Отправка информации о кодировании на сервер
Сообщения push шифруются на сервере приложения для отправки на сервер push и дешифруются браузером перед передачей в сервис-воркер приложения. Открытые и закрытые ключи генерируются браузером, и только открытый ключ и связанная секретная информация передаются веб-приложению, а следовательно, и приложению-серверу. Это гарантирует, что сообщения push остаются конфиденциальными при прохождении через инфраструктуру сервера push.
Открытый ключ p256dh и секретная информация auth, используемые для шифрования сообщения, предоставляются сервис-воркеру через подписку на push, используя метод PushSubscription.getKey(), вместе с целевым конечным пунктом для отправки сообщений push в PushSubscription.endpoint. Кодировка, которая должна использоваться для шифрования, предоставляется supportedContentEncodings.
Эта информация может быть отправлена на сервер приложения любым способом. Один из подходов - поместить необходимую информацию из PushSubscription и supportedContentEncodings в объект JSON, сериализовать его с помощью JSON.stringify() и отправить результат на сервер приложения.
// 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);
});
Спецификации
| Спецификация |
|---|
| Push API # dom-pushmanager-supportedcontentencodings |
Совместимость с браузерами
| Десктоп | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
supportedContentEncodings_static |
60 | 17 | 134 | 47 | 16Уведомления поддерживаются в macOS Ventura и новее. |
60 | 134 | 44 | 16.4Уведомления поддерживаются в веб-приложениях, сохранённых на главном экране. |
4.0 | Нет |
© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/PushManager/supportedContentEncodings_static