Yaygın Sorunlar ve Hata Bildirme

Matt Gaunt

Web push ile ilgili bir sorunla karşılaştığınızda hata ayıklamak veya yardım alın. Bu belgede, sık karşılaşılan sorunlardan bazıları ve düzeltilmesi gerekenlerle ilgili yapmanız gerekir.

Hata ayıklama aktarımına geçmeden önce, dosyanın güncel olmaması, kaydedilememesi veya genellikle olağan dışı bir davranış olduğu anlamına gelir. Bir hizmet çalışanları için hata ayıklama ile ilgili muhteşem bir belge yeni başlayanlara göz atmanızı kesinlikle öneririm. olabilir.

Web push geliştirilirken ve test edilirken işaretlenecek iki farklı aşama vardır: Her birinin kendine özgü ortak sorunları / sorunları var:

  • İleti Gönderme: İleti gönderme işleminin başarılı olduğundan emin olun. 201 HTTP kodu alırsınız. Değilseniz :
  • Mesaj alma: Mesajı başarıyla gönderebiliyorsanız ancak ileti tarayıcıda alınmamaktadır:

Push mesajı ve ilgili bölümleri gönderip alamıyorsanız Bu doküman, sorunun giderilmesine yardımcı olmuyorsa, bazı durumlarda hatasına neden olabilir. Bu durumda, Hata Raporları Oluşturma bölümünü, kalite sürecini hızlandırmak için gerekli tüm bilgileri içeren adımları uygulayın.

Başlamadan önce vurgulamak istediğim bir konu da Firefox ve Mozilla AutoPush Hizmeti'nde çok iyi hata mesajları vardır. Sıkışırsanız sorunun ne olduğundan emin değilseniz, Firefox'ta test edin ve daha yararlı bir hata mesajı alabilirsiniz.

Yetkilendirme sorunları

Yetkilendirme sorunları, geliştiricilerin ve web push ile başlayın. Bu sorun, normalde yalnızca bir istemcinin Uygulama Sunucusu Anahtarları (VAPID anahtarları olarak da bilinir) ziyaret edin.

Firefox'ta ve Chrome'da push kullanımını desteklemenin en kolay yolu, subscribe() görüşmesinde applicationServerKey. Kötü tarafı ise kullanıcı arabiriminiz ile sunucunun anahtarları arasındaki herhangi bir tutarsızlık yetkilendirme hatası.

Chrome ve FCM'de

Push hizmeti olarak FCM'yi kullanan Chrome'da Farklı dönüşüm aralıkları için FCM'den UnauthorizedRegistration yanıt Bunların tümü uygulama sunucusu anahtarlarını içerir.

Aşağıdakilerin herhangi birinde UnauthorizedRegistration hatası alırsınız durumlar:

  • FCM'ye yapılan istekte Authorization başlığı tanımlayamazsanız.
  • Kullanıcıyı abone olmak için kullanılan uygulama anahtarı, kullanılan anahtarla eşleşmiyor tıklayın.
  • Geçerlilik süresi JWT'nizde geçersizdir (ör. geçerlilik süresinin 24 saati aşması veya JWT'nin süresi doldu.
  • JWT hatalı biçimlendirilmiş veya geçersiz değerler içeriyor.

Hata yanıtı tam olarak aşağıdaki gibi görünür:

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

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

Chrome'da bu hata mesajını alırsanız Firefox'ta test etmeyi düşünün sorun hakkında daha fazla bilgi sağlayıp sağlamayacağını gösterir.

Firefox ve Mozilla AutoPush

Firefox ve Mozilla AutoPush, Authorization sorun.

Ayrıca, Unauthorized Authorization üstbilgisi push işleminize dahil edilmezse Mozilla AutoPush isteğinde bulunabilirsiniz.

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

JWT'nizdeki geçerlilik süresi sona erdiyse, Jetonun şu özelliklere sahip olduğunu açıklayan bir mesaj içeren Unauthorized hatası: süresi doldu.

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

Uygulama sunucusu anahtarları, kullanıcının kullandığı abone olundu ve Yetkilendirme başlığı imzalandığında Not Found hatası döndürülür:

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

Son olarak, JWT'nizde geçersiz bir değer varsa (örneğin, "alg" değeri beklenmedik bir değerdir) Mozilla'da Mozilla'dan aşağıdaki hatayı alırsınız Otomatik aktarma:

{
  "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 durum kodları

push hizmetini kullanabilirsiniz. Aşağıda, HTTP durum kodlarının listesi ve bunlarla ilgili olarak ne anlama geldikleri verilmiştir: web aktarımı.

Durum Kodu Açıklama
429 Çok fazla istek var. Uygulama sunucunuz push hizmetini kullanabilirsiniz. Hizmetten gelen yanıtta "Yeniden Deneme-Sonra" ifadesi bulunmalıdır. başlığı isteği göndermenin ne kadar süreceğini gösterir.
400 Geçersiz istek. Başlıklarınızdan biri geçersiz veya kötü biçimlendirilmiş.
404 Bulunamadı. Bu durumda, kullanıcının yeniden abone olması için bir fırsat beklenmektedir.
410 Gitti. Abonelik artık geçerli değil ve abonelikten kaldırılması gerekiyor. arka uç. Bu kayıt, aynı zamanda "unsubscribe()" çağrısı yaparak `PushSubscription`.
413 Yük boyutu çok büyük. Push hizmetinin gerektirdiği minimum boyut yükü 4096 bayt (veya 4 KB) boyutunda olduğundan emin olun. Daha büyük herhangi bir değer bu hataya neden olabilir.

HTTP durum kodu bu listede yoksa ve hata mesajı görünmüyorsa yardımcı olacaksa, Web Push Protokolü teknik özelliklerine durum koduna referans verilir. Ayrıca, bu kod emin olmanız gerekir.

Yük şifreleme sorunu

Push mesajını başarıyla tetikleyebiliyorsanız (örneğin, web'e mesaj gönderebiliyorsanız) 201 yanıt kodu alabiliyorsanız) ancak push etkinliği yardımcı oluyorsa bu genellikle tarayıcının başarısız olduğunu gösterir. ve aldığı mesajın şifresini çözer.

Bu durumda, Firefox'un Geliştirici Araçları'nda bir hata mesajı göreceksiniz. şu şekilde çalışır:

Firefox Geliştirici Araçları&#39;nda şifre çözme mesajı gösteriliyor.

Sorunun Chrome'da olup olmadığını kontrol etmek için aşağıdakileri yapın:

  1. about://gcm-internals sayfasına gidin ve "Kaydı Başlat"ı tıklayın düğmesini tıklayın.

Chrome GCM dahili kaydı.

  1. Bir push mesajı tetikleyin ve "İleti Şifre Çözme Hatası Günlüğü"nün altına bakın.

GCM dahili şifre çözme günlüğü.

Yükün şifresinin çözülmesiyle ilgili bir sorun varsa bir hata mesajı görürsünüz olana benzer. (AES-GCM decryption failed dikkat edin mesajını görürsünüz.)

Sorununuz buysa şifrelemede hata ayıklamaya yardımcı olabilecek birkaç araç vardır:

Bağlantı sorunu

Service Worker'ınızda push etkinliği almıyorsanız ve şifre çözme hatası görüyorsanız tarayıcı kullanıma sunuyoruz.

Chrome'da tarayıcının ileti alıp almadığını 'Alın İleti Günlüğü' (sic) dili: about://gcm-internals.

GCM dahili öğeleri ileti günlüğünü alır.

İletiyi zamanında göremiyorsanız, tarayıcınızın bağlantı durumu CONNECTED:

GCM dahili bağlantı durumu.

"BAĞLI" değilse mevcut profilinizi silmeniz ve yeni bir hesap oluşturun. Eğer Sorun yine de çözülmez. Lütfen aşağıda önerildiği gibi bir hata raporu gönderin.

Hata raporlarını yükseltme

Yukarıdakilerin hiçbiri sorununuzu gidermiyorsa ve sorun olabilir, lütfen karşılaştığınız tarayıcıyla ilgili şununla ilgili sorun:

Chrome için sorunu şurada iletebilirsiniz: https://bugs.chromium.org/p/chromium/issues/list Firefox için sorunu şurada ele almanız gerekir: https://bugzilla.mozilla.org/

İyi bir hata raporu sağlamak için aşağıdaki ayrıntıları sağlamanız gerekir:

  • Test ettiğiniz tarayıcılar (ör. Chrome sürüm 50, Chrome sürüm 51, Firefox Firefox sürüm 51).
  • Sorunu gösteren bir PushSubscription örneği.
  • Örnek istekleri (yani, aktarma işlemine ağ isteklerinin içeriği) ekleyin hizmetini kullanabilirsiniz.
  • Ağ isteklerinden gelen örnek yanıtları da ekleyin.

Tekrarlanabilir bir örnek (kaynak kodu veya barındırılan web) sağlayabilirseniz genellikle sorunu teşhis edip çözmeyi hızlandırır.

Yakında gidilecek yerler

Kod laboratuvarları