Bei einem Problem mit Web Push kann es schwierig sein, es zu beheben oder um Hilfe zu erhalten. Dieses Dokument beschreibt einige der häufigsten Probleme und was Sie tun sollten. wenn Sie einen Fehler in Chrome oder Firefox finden.
Bevor wir uns mit dem Debuggen von Push befassen, treten möglicherweise Probleme beim Debugging auf. Service Worker selbst, die Datei wird nicht aktualisiert, lässt sich nicht registrieren oder in der Regel ein ungewöhnliches Verhalten. Es gibt eine Tolles Dokument zum Debuggen von Service Workern die ich Ihnen empfehle, wenn Sie neu in für die Entwicklung von Service Workern.
Beim Entwickeln und Testen von Web-Push müssen zwei verschiedene Phasen durchlaufen werden: jede mit ihren eigenen häufigen Problemen / Problemen:
- Nachricht senden:Überprüfen Sie, ob die Nachrichten erfolgreich gesendet wurden.
Sie sollten den HTTP-Code 201 erhalten. Falls nicht :
<ph type="x-smartling-placeholder">
- </ph>
- Auf Autorisierungsfehler prüfen:Wenn Sie eine Autorisierung erhalten haben. Fehlermeldung siehe Abschnitt zu Autorisierungsproblemen.
- Andere API-Fehler: Wenn Sie eine andere Statuscodes als 201 erhalten, finden Sie im Abschnitt HTTP-Statuscodes zur Ursache des Problems.
- Nachrichten empfangen: Wenn Sie eine Nachricht senden können,
aber die Nachricht wird nicht im Browser empfangen:
<ph type="x-smartling-placeholder">
- </ph>
- Nach Verschlüsselungsproblemen suchen: Siehe Nutzlastverschlüsselung Bereich „Probleme“.
- Nach Verbindungsproblemen suchen:Wenn das Problem bei Chrome liegt, kann es sich um eine Verbindung handeln. Weitere Informationen finden Sie im Abschnitt Verbindungsprobleme. .
Wenn Sie keine Push-Nachricht senden und empfangen können, und die entsprechenden Abschnitte in diesem Dokument nicht bei der Fehlerbehebung helfen, haben Sie möglicherweise eine Fehler im Push-Mechanismus selbst. Sehen Sie sich in diesem Fall die Meldung von Fehlerberichten um einen guten Fehlerbericht mit allen notwendigen Informationen zu senden, um den Vorgang zu beschleunigen. der Fehlerbehebung.
Bevor wir beginnen, möchte ich euch noch darauf hinweisen, dass Firefox und Mozilla AutoPush Service gibt gute Fehlermeldungen. Wenn Sie nicht weiterkommen und wenn ihr euch nicht sicher seid, was das Problem ist, dann testet es in Firefox. erhalten Sie eine hilfreichere Fehlermeldung.
Probleme mit der Autorisierung
Autorisierungsprobleme sind eines der häufigsten Probleme, beginnend mit Web-Push. Dies ist normalerweise ein Problem bei der Konfiguration eines Anwendungsserverschlüssel der Website (auch als VAPID-Schlüssel bezeichnet)
Die einfachste Möglichkeit zur Unterstützung von Push in Firefox und Chrome ist die Bereitstellung einer
applicationServerKey
im subscribe()
-Aufruf. Die Kehrseite ist,
Abweichungen zwischen Ihrem Frontend und den Schlüsseln des Servers führen zu einer
Autorisierungsfehler.
Für Chrome und FCM
Für Chrome, das FCM als Push-Dienst verwendet, erhalten Sie eine Benachrichtigung
UnauthorizedRegistration
-Antwort von FCM für eine Reihe verschiedener
Fehler, die alle Anwendungsserverschlüssel betreffen.
Sie erhalten den Fehler „UnauthorizedRegistration
“ in jedem der folgenden Fälle
Situationen:
- Wenn Sie in der Anfrage an FCM keinen
Authorization
-Header definieren. - Der für das Abonnieren des Nutzers verwendete Anwendungsschlüssel stimmt nicht mit dem verwendeten Schlüssel überein um den Autorisierungsheader zu signieren.
- Die Ablaufzeit ist im JWT ungültig, d.h. sie überschreitet 24 Stunden oder Das JWT ist abgelaufen.
- Das JWT ist fehlerhaft oder hat ungültige Werte.
Die vollständige Fehlerantwort sieht so aus:
<html>
<head>
<title>UnauthorizedRegistration</title>
</head>
<body bgcolor="#FFFFFF" text="#000000">
<h1>UnauthorizedRegistration</h1>
<h2>Error 400</h2>
</body>
</html>
Wenn Sie diese Fehlermeldung in Chrome erhalten, sollten Sie den Test in Firefox durchführen, um zu sehen, wenn sie einen besseren Einblick in das Problem bietet.
Firefox und Mozilla AutoPush
Firefox und Mozilla AutoPush bieten nutzerfreundliche Fehlermeldungen
Authorization
Probleme.
Sie erhalten auch eine Unauthorized
-Fehlerantwort von
Mozilla AutoPush, wenn der Authorization
-Header nicht in Ihrem Push enthalten ist
{
"errno": 109,
"message": "Request did not validate missing authorization header",
"code": 401,
"more_info": "http://autopush.readthedocs.io/en/latest/http.html#error-codes",
"error": "Unauthorized"
}
Wenn die Ablaufzeit in deinem JWT abgelaufen ist, erhältst du außerdem eine
Unauthorized
-Fehler mit einer Meldung, die erklärt, dass das Token
abgelaufen.
{
"code": 401,
"errno": 109,
"error": "Unauthorized",
"more_info": "http://autopush.readthedocs.io/en/latest/http.html#error-codes",
"message": "Request did not validate Invalid bearer token: Auth expired"
}
Wenn sich die Schlüssel des Anwendungsservers beim
und beim Signieren des Autorisierungsheaders wird ein Not Found
zurückgegeben:
{
"errno": 102,
"message": "Request did not validate invalid token",
"code": 404,
"more_info": "http://autopush.readthedocs.io/en/latest/http.html#error-codes",
"error": "Not Found"
}
Wenn dein JWT einen ungültigen Wert enthält (z. B. wenn der Wert „alg“ ein unerwarteter Wert ist), erhalten Sie die folgende Fehlermeldung von Mozilla AutoPush:
{
"code": 401,
"errno": 109,
"error": "Unauthorized",
"more_info": "http://autopush.readthedocs.io/en/latest/http.html#error-codes",
"message": "Request did not validate Invalid Authorization Header"
}
HTTP-Statuscodes
Es gibt eine Reihe von Problemen, die zu einem Nicht-201-Antwortcode von einer zum Push-Dienst. Nachfolgend finden Sie eine Liste der HTTP-Statuscodes und ihre Bedeutung im Verhältnis zu Web Push.
Statuscode | Beschreibung |
---|---|
429 | Zu viele Anfragen: Ihr Anwendungsserver hat eine Ratenbegrenzung erreicht: zum Push-Dienst. Die Antwort des Dienstes sollte einen „Repeat-After“-Befehl enthalten Header für wie lange es dauert, bis eine weitere Anfrage gestellt werden kann. |
400 | Ungültige Anfrage. Einer Ihrer Header ist ungültig oder falsch formatiert ist. |
404 | Nicht gefunden. In diesem Fall sollten Sie PushSubscription aus Ihrem und warten Sie auf die Möglichkeit, den Nutzer erneut zu abonnieren. |
410 | Weg. Das Abo ist nicht mehr gültig und sollte aus Ihrem Back-End. Dies kann durch Aufrufen von „unsubscribe()“ auf einem `PushSubscription`. |
413 | Nutzlastgröße zu groß. Die Nutzlast der Mindestgröße, die ein Push-Dienst benötigt unterstützt werden: 4.096 Byte (oder 4 KB). Alles, was größer ist, kann zu diesem Fehler führen. |
Wenn sich der HTTP-Statuscode nicht in dieser Liste befindet und die Fehlermeldung sollten Sie das Web-Push-Protokoll Spezifikation, um zu prüfen, auf den Statuscode und das Szenario, in dem dieser Statuscode verwendet werden können.
Problem bei der Nutzlastverschlüsselung
Ob Sie eine Push-Nachricht auslösen (z.B. eine Nachricht an eine Web-App) Push-Dienst und erhalten den Antwortcode 201), aber das Push-Ereignis wird nie in an Ihren Service Worker gesendet haben, weist dies normalerweise darauf hin, dass der Browser die empfangene Nachricht entschlüsseln
In diesem Fall sollte in den Entwicklertools von Firefox eine Fehlermeldung angezeigt werden. in der Konsole:
So überprüfen Sie, ob dies das Problem in Chrome ist:
- Rufen Sie about://gcm-internals auf und klicken Sie auf "Aufzeichnung starten". Schaltfläche.
- Lösen Sie eine Push-Nachricht aus und sehen Sie unter dem Fehlerprotokoll zur Nachrichtenentschlüsselung nach.
Wenn bei der Entschlüsselung der Nutzlast ein Problem auftritt, wird eine Fehlermeldung angezeigt.
ähnlich wie oben zu sehen. Beachten Sie die AES-GCM decryption failed
in der Spalte „Details“ angezeigt.)
Wenn dies Ihr Problem ist, gibt es einige Tools, die Ihnen beim Debuggen der Verschlüsselung helfen können:
- Push Encryption Verifier Tool von Peter Beverloo
- Web-Push: Testseite zur Datenverschlüsselung von Mozilla
Verbindungsproblem
Wenn Sie in Ihrem Service Worker kein Push-Ereignis empfangen und auch keine kann es passieren, dass der Browser keine Verbindung herstellen kann. einem Push-Dienst.
In Chrome können Sie überprüfen, ob der Browser Nachrichten empfängt, indem Sie
„Empfangen des Nachrichtenprotokolls“ (sic) in about://gcm-internals
.
Wenn Sie die Nachricht nicht rechtzeitig erhalten, stellen Sie sicher, dass
der Verbindungsstatus Ihres Browsers ist CONNECTED
:
Wenn es nicht „VERKNÜPFT“ ist, musst du möglicherweise dein aktuelles Profil löschen und erstellen Sie eine neue. Wenn das das Problem immer noch nicht behoben wird, senden Sie einen Fehlerbericht wie unten beschrieben.
Benachrichtigungen über Fehler melden
Wenn das Problem durch keinen der oben genannten Schritte behoben werden kann und es keine Anzeichen dafür gibt, Problem könnte sein. Erstelle ein Problem mit dem Browser, bei dem du ein Problem hast. Problem mit:
Bei Chrome melden Sie das Problem hier: https://bugs.chromium.org/p/chromium/issues/list Bei Firefox sollten Sie das Problem hier melden: https://bugzilla.mozilla.org/
Um einen guten Fehlerbericht zu erstellen, benötigen wir folgende Angaben:
- Browser, in denen Sie getestet haben (z.B. Chrome-Version 50, Chrome-Version 51, Firefox) Version 50 oder Firefox Version 51).
- Ein
PushSubscription
-Beispiel, das das Problem veranschaulicht. - Geben Sie alle Beispielanfragen an (z. B. Inhalt von Netzwerkanfragen an eine Push-Anfrage). Dienst, einschließlich Header).
- Geben Sie auch alle Beispielantworten aus Netzwerkanfragen an.
Wenn Sie ein reproduzierbares Beispiel bereitstellen können, entweder Quellcode oder ein gehostetes Website zu finden, beschleunigt sie die Diagnose und Lösung des Problems häufig.
Weitere Informationen
- Web-Push-Benachrichtigungen – Übersicht
- Funktionsweise von Push
- Nutzer abonnieren
- UX der Berechtigung
- Nachrichten mit Web-Push-Bibliotheken senden
- Web-Push-Protokoll
- Umgang mit Push-Ereignissen
- Benachrichtigungen anzeigen
- Benachrichtigungsverhalten
- Allgemeine Benachrichtigungsmuster
- FAQs zu Push-Benachrichtigungen
- Häufige Probleme und Melden von Fehlern