Я использую библиотеку pywebpush 1.4.0 для отправки веб-уведомлений из бэкэнда Django. Ключи, которые я использую, были получены с сайта https://web-push-codelab.glitch.me/. а>. Подписка вроде работает. Более того, я проверил это в Firefox, и там все работает нормально.
Я получаю следующую ошибку на стороне сервера при нажатии на Chrome:
Push failed: <Response [400]>: <HTML>
<HEAD>
<TITLE>UnauthorizedRegistration</TITLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF" TEXT="#000000">
<H1>UnauthorizedRegistration</H1>
<H2>Error 400</H2>
</BODY>
</HTML>
Странно то, что мой бэкэнд контролирует 3 домена, и push работает нормально даже для Chrome в одном домене и не работает в других. Я исключил следующие возможные проблемы:
- Неправильные пары закрытого и открытого ключей, так как они отлично работают в Firefox.
- Устаревшая библиотека pywebpush, так как на одном домене в Chrome работает нормально
- В нескольких ответах (исключение Chrome Web Notification Push Unauthorized Registration) указано на обновите версию py-vapid, установленную pywebpush, но ее версия уже py-vapid == 1.3.0
Единственная возможность, которую я вижу, это если Chrome не разрешает push-уведомления в разных доменах из одного и того же бэкэнда. Кто-нибудь знает о таком ограничении или может помочь мне с любыми другими указателями здесь?
Примечание. Я использую разные ключи для всех трех доменов.
Вот код, который я использую для нажатия:
from pywebpush import webpush
webpush(subscription_info,
data,
vapid_private_key=vapid_private_key,
vapid_claims={"sub": "mailto:[email protected]"})
«Информация о подписке» — это json, полученный при подписке пользователя, а «vapid_private_key» — это соответствующий закрытый ключ.