#push-notification #push #mozilla #web-push
#push-уведомление #толкать #mozilla #web-push
Вопрос:
Я отправляю push-уведомления в службу рассылки Mozilla:
https://updates.push.services.mozilla.com/wpush/v1/...
Это работает очень хорошо уже долгое время, но с двух недель я получаю объект с запросом 413, слишком большой для одного (и только этого) потребителя.
Я искал в Интернете это сообщение об ошибке, но все, что я нашел, это ограничение в 4 КБ для большинства push-сервисов. Но полезная нагрузка, которую я отправляю, намного меньше:
{
"Titel": "New calendar entry from subdomain.domain.com",
"Text": "A new entry has been made by firstname lastname in the calendar your-calendar-name on 2021/02/03.",
"Icon": "https://subdomain.domain.com/version/webapp/icon192.png",
"URL": "https://subdomain.domain.com/calendar/event/15578"
}
Итак, мой вопрос: что может вызвать слишком большую ошибку этого объекта запроса, когда я отправляю полезную нагрузку размером менее 4 КБ?
Комментарии:
1. Нет идей по этому поводу? Ошибка возникает снова и снова, даже если я сократил полезную нагрузку…
Ответ №1:
Сегодня я столкнулся с чем-то очень похожим на эту проблему. Причиной проблемы был Firefox для Android, который ведет себя иначе, чем Firefox для настольных компьютеров. URL-адреса для настольной версии выглядят следующим образом: https://updates.push.services.mozilla.com/wpush/v2 /[что-то] URL-адреса версии Android выглядят следующим образом: https://updates.push.services.mozilla.com/wpush/v1 /[что-то]
Обратите внимание на v2, а не на v1
Все запросы к конечной точке v1 возвращались с 413 Request Entity Too Large
Разница в том, что настольная версия принимает стандартные 4078 байт, но версия для Android, похоже, имеет нижний предел (возможно, 3052 байта).
Я использую библиотеку php minishlink для отправки push-уведомлений, и я нашел некоторую информацию об этом здесь: https://github.com/web-push-libs/web-push-php#payload-length-security-and-performance
В этом документе говорится, что значение по умолчанию совместимо с Firefox для Android (3052 байта), но на практике я мог заставить его работать только тогда, когда я добавил строку
$webPush->setAutomaticPadding(false);
к моему коду. Так что, если вы используете библиотеку, которая заполняет полезную нагрузку по соображениям безопасности, это может быть вашей проблемой.
Для более подробного обсуждения см. https://github.com/web-push-libs/web-push-php/issues/108 , что предполагает, что 2847 байт, а не 3052, является фактическим пределом на практике для полезной нагрузки для Firefox для Android.
Комментарии:
1. Я также использую библиотеку WebPush от Minishlink, так что большое вам спасибо за подсказку. Теперь я также установил для автоматического заполнения значение false, а затем давайте посмотрим, работает ли это.
2. До сих пор эта ошибка не повторялась. Так что я думаю, что это делает свое дело. Большое вам спасибо!