Служба рассылки Mozilla: 413 — объект запроса слишком большой

#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. До сих пор эта ошибка не повторялась. Так что я думаю, что это делает свое дело. Большое вам спасибо!