Spec-Zone.ru › Web APIs

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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API