Häufige Probleme und Fehler melden

Matt Gaunt

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

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:

Firefox-Entwicklertools mit Entschlüsselungsnachricht.

So überprüfen Sie, ob dies das Problem in Chrome ist:

  1. Rufen Sie about://gcm-internals auf und klicken Sie auf "Aufzeichnung starten". Schaltfläche.

Chrome GCM-Interna-Eintrag.

  1. Lösen Sie eine Push-Nachricht aus und sehen Sie unter dem Fehlerprotokoll zur Nachrichtenentschlüsselung nach.

Entschlüsselungsprotokoll der GCM-Internen

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:

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.

GCM-Interna empfangen das Nachrichtenprotokoll.

Wenn Sie die Nachricht nicht rechtzeitig erhalten, stellen Sie sicher, dass der Verbindungsstatus Ihres Browsers ist CONNECTED:

GCM-Interna-Verbindungsstatus

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

Code labs