Cómo informar errores y problemas habituales

Cuando encuentras un problema de envío web, puede ser difícil depurarlo o buscar ayuda. En este documento, se describen algunos de los problemas habituales y lo que deberías si encuentras un error en Chrome o Firefox.

Antes de profundizar en el envío de depuración, es posible que tengas problemas con la depuración. service workers, el archivo no se actualiza, no se registra generalmente solo se da un comportamiento inusual. Hay un documento impresionante sobre la depuración de service workers que te recomiendo encarecidamente que consultes si es la primera vez que el desarrollo de service workers.

Existen dos etapas que se deben marcar cuando se desarrolla y se prueba el sitio web push. cada uno con su propio conjunto de problemas o problemas comunes:

  • Envío de mensajes: Asegúrate de que los mensajes se envíen correctamente. Deberías obtener un código HTTP 201. Si no cumples con estos requisitos :
    • Verifica si hay errores de autorización: Si recibes una autorización. mensaje de error, consulta la Sección Authorization Issues.
    • Otros errores de la API: Si recibes una respuesta de código de estado que no es 201, consulta la sección Códigos de estado HTTP para orientación sobre la causa del problema.
  • Recepción de un mensaje: Si puedes enviar un mensaje correctamente, pero el mensaje no se recibe en el navegador:

Si no puedes enviar y recibir mensajes push ni las secciones relevantes no están ayudando a depurar el problema, entonces es posible que hayas encontrado en el mismo mecanismo de empuje. En este caso, consulta la Cómo generar informes de errores para presentar un buen informe de errores con toda la información necesaria para acelerar el proceso de corrección de errores.

Antes de comenzar, me gustaría señalar que Firefox y la Mozilla AutoPush Service tiene excelentes mensajes de error. Si te quedas atascado y no estás seguro de cuál es el problema, pruébalo en Firefox y observa si recibirás un mensaje de error más útil.

Problemas de autorización

Los problemas de autorización son uno de los problemas más comunes que enfrentan los desarrolladores cuando comenzando con web push. Por lo general, es un problema con la configuración de una Claves de servidor de aplicaciones (también conocidas como claves VAPID) del sitio

La forma más sencilla de admitir notificaciones push en Firefox y Chrome es proporcionar una applicationServerKey en la llamada a subscribe(). La desventaja es que y cualquier discrepancia entre las claves del servidor y frontend de autorización.

En Chrome y FCM

Para Chrome, que usa FCM como servicio push, recibirás un UnauthorizedRegistration respuesta de FCM para un rango de diferentes relacionados con las claves del servidor de la aplicación.

Recibirás un error UnauthorizedRegistration en cualquiera de las siguientes opciones situaciones:

  • Si no puedes definir un encabezado Authorization en la solicitud a FCM,
  • La clave de aplicación que se usó para suscribir al usuario no coincide con la clave que se usó para firmar el encabezado de autorización.
  • El vencimiento no es válido en tu JWT, es decir, el vencimiento supera las 24 horas o el JWT venció.
  • El JWT tiene errores de formato o valores no válidos.

La respuesta de error completa se ve de la siguiente manera:

<html>
  <head>
    <title>UnauthorizedRegistration</title>
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <h1>UnauthorizedRegistration</h1>

    <h2>Error 400</h2>
  </body>
</html>

Si recibes este mensaje de error en Chrome, prueba probar en Firefox para ver si proporciona más información sobre el problema.

Firefox y Mozilla AutoPush

Firefox y Mozilla AutoPush proporcionan un conjunto amigable de mensajes de error para Errores de Authorization.

También recibirás una respuesta de error Unauthorized de Mozilla AutoPush si el encabezado Authorization no está incluido en tu envío para cada solicitud.

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

Si el vencimiento de tu JWT venció, también recibirás un Unauthorized con un mensaje que explica que el token se y que ya venció.

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

Si las claves del servidor de la aplicación son diferentes entre y, cuando se firmó el encabezado de autorización, se produjo un error Not Found se devolverá el siguiente error:

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

Por último, si tienes un valor no válido en tu JWT (por ejemplo, si el valor “alg”) es un valor inesperado), recibirá el siguiente error de 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"
}

Códigos de estado HTTP

Existe una variedad de problemas que pueden provocar un código de respuesta que no sea 201 desde un un servicio push. A continuación, se muestra una lista de códigos de estado HTTP y sus significados en relación con a web push.

Código de estado Descripción
429 Demasiadas solicitudes. Tu servidor de aplicaciones alcanzó un límite de frecuencia con un un servicio push. La respuesta del servicio debe incluir el mensaje encabezado a indicar cuánto tiempo debe transcurrir para que se pueda realizar otra solicitud.
400 Solicitud no válida. Uno de tus encabezados no es válido o tiene un formato incorrecto.
404 No se encontró. En este caso, debes borrar la PushSubscription de tu o un backend y esperar una oportunidad para volver a suscribir al usuario.
410 Se fue. La suscripción ya no es válida y debería quitarla de tu y el backend. Esto se puede reproducir llamando a `unsubscribe()` en un `PushSubscription`.
413 El tamaño de la carga útil es demasiado grande. El tamaño mínimo de carga útil que debe tener un servicio de envío es de 4,096 bytes (o 4 KB). Cualquier elemento más grande puede generar este error.

Si el código de estado HTTP no está en esta lista y el mensaje de error no consulta el protocolo de envío web spec para ver si junto con una situación en la que se puede que se usará.

Problema de encriptación de carga útil

Si puedes activar correctamente un mensaje de envío (es decir, enviar un mensaje a una Web un servicio push y recibe un código de respuesta 201), pero el evento push nunca se activa tu service worker, esto suele indicar que el navegador no pudo desencriptar el mensaje que recibió.

Si este es el caso, deberías ver un mensaje de error en las Herramientas para desarrolladores de Firefox. la consola de la siguiente manera:

Herramientas para desarrolladores de Firefox con mensaje de desencriptación.

Para verificar si ese es el problema de Chrome, haz lo siguiente:

  1. Ve a about://gcm-internals y haz clic en "Iniciar la grabación". .

Registro interno de GCM de Chrome.

  1. Activa un mensaje de envío y busca en el “Registro de fallas de desencriptación de mensajes”.

Registro de desencriptación de datos internos de GCM.

Si hay un problema con la desencriptación de la carga útil, verás un error. similar al que se muestra arriba. (Observa el AES-GCM decryption failed en la columna de detalles).

Existen algunas herramientas que pueden ayudar a depurar la encriptación si este es tu problema:

Problema de conexión

Si no recibes un evento push en tu service worker algún error de desencriptación, es posible que el navegador no pueda conectarse a mediante un servicio push.

En Chrome, puedes comprobar si el navegador recibe mensajes examinando el "Registro de mensajes de recepción" (sic) en about://gcm-internals.

Los componentes internos de GCM reciben el registro de mensajes.

Si no ves que el mensaje llegue de forma oportuna, asegúrate de que el estado de conexión de tu navegador es CONNECTED:

Estado de conexión de los componentes internos de GCM.

Si no es "CONNECTED", es posible que debas borrar tu perfil actual y crear una nueva. Si eso el problema aún no se resuelve, envía un informe de errores como se sugiere a continuación.

Informes de errores

Si ninguna de las opciones anteriores te ayuda a resolver el problema y no ves ninguna señal de lo que infórmalo, infórmalo sobre el navegador al que tienes problema con:

En Chrome, indicarías el problema de la siguiente manera: https://bugs.chromium.org/p/chromium/issues/list En Firefox, debes informar el problema en: https://bugzilla.mozilla.org/

Para brindar un buen informe de errores, debes brindar los siguientes detalles:

  • Navegadores en los que has probado (p.ej., Chrome 50, Chrome 51, Firefox versión 50 y Firefox 51).
  • Un PushSubscription de ejemplo que demuestra el problema.
  • Incluye cualquier solicitud de ejemplo (es decir, contenido de solicitudes de red a una solicitud servicios, incluidos los encabezados).
  • Incluye también cualquier respuesta de ejemplo de las solicitudes de red.

Si puede proporcionar un ejemplo reproducible, sea de código fuente o de una página sitio, a menudo acelera el diagnóstico y la resolución del problema.

Próximos pasos

Code labs