Mozilla 推送服务:413 - 请求实体太大

Mozilla Push Service: 413 - Request Entity Too Large

我正在向 Mozilla 的推送服务发送推送通知:

https://updates.push.services.mozilla.com/wpush/v1/...

这在很长一段时间内都运行良好,但自从两周以来我收到一个 413 - 请求实体对于一个(并且只有这个)消费者来说太大了。

我在网上搜索了该错误消息,但我只找到了大多数推送服务的 4KB 限制。但是我发送的有效负载要小得多:

{
    "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"
}

所以我的问题是:当我发送小于 4KB 的负载时,什么会导致此请求实体太大错误?

我今天遇到了非常类似的问题。问题的原因是 Firefox for Android,它的行为与桌面版 Firefox 不同。 桌面版的网址是这样的:https://updates.push.services.mozilla.com/wpush/v2/[something] android 版本的 URL 是这样的:https://updates.push.services.mozilla.com/wpush/v1/[something]

注意 v2 相对于 v1

对 v1 端点的请求都返回 413 Request Entity Too Large

不同的是桌面版接受标准的4078字节,但是Android版好像有下限(可能是3052字节)。

我使用 minishlink 的 php 库发送推送通知,我在这里找到了一些相关信息: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 有效负载的实际限制。