عندما تواجه مشكلة في إرسال عبر الويب، فقد يكون من الصعب تصحيح المشكلة أو العثور على المساعدة. يوضح هذا المستند بعض المشكلات الشائعة والإجراءات التي يجب إذا وجدت خللاً في Chrome أو Firefox.
قبل التعمّق في تفاصيل عملية تصحيح الأخطاء، قد تواجه مشاكل تتعلّق بتصحيح الأخطاء عاملي الخدمة أنفسهم أو عدم تحديث الملف أو إخفاق التسجيل أو وعادةً ما يكون مجرد سلوك غير عادي. تتوفر مستند رائع حول تصحيح أخطاء موظفي الخدمة فإنني أوصي بشدة بالتحقق مما إذا كنت جديدًا في وتطوير عاملي الخدمات.
هناك مرحلتان مختلفتان يجب التحقق منهما عند تطوير اختبار الويب عبر الإنترنت واختباره، ولكل منها مجموعة خاصة من المشكلات / المشكلات الشائعة:
- إرسال رسالة: تأكَّد من أنّه تم إرسال الرسائل بنجاح.
من المفترض أن تحصل على رمز HTTP 201. إذا لم تكن :
- التحقّق من أخطاء التفويض: إذا تلقّيت تفويضًا رسالة خطأ، شاهد قسم "مشاكل التفويض":
- أخطاء أخرى في واجهة برمجة التطبيقات: إذا تلقيت ردًا برمز حالة ليس من فئة 201، راجِع قسم رموز حالة HTTP للاطّلاع على إرشادات حول سبب المشكلة.
- استلام رسالة: إذا كنت قادرًا على إرسال رسالة بنجاح،
ولكن لا يتم استلام الرسالة على المتصفح:
- التحقّق من مشاكل التشفير: يُرجى الاطّلاع على مقالة تشفير حمولة البيانات. قسم المشاكل:
- التحقق من وجود مشاكل في الاتصال: إذا كانت المشكلة تتعلق بمتصفِّح Chrome، ربما تكون عملية ربط. راجِع قسم "مشاكل الاتصال". لمزيد من المعلومات.
إذا لم تتمكن من إرسال رسالة فورية والأقسام ذات الصلة وتلقّيها في هذا المستند، فربما تكون قد عثرت على خطأ في آلية الدفع نفسها. وفي هذه الحالة، راجع زيادة تقارير الأخطاء لإرسال تقرير خطأ جيد بجميع المعلومات اللازمة لتسريع عملية إصلاح الأخطاء.
أحد الأشياء التي أود أن أذكرها قبل أن نبدأ هو أن Firefox تحتوي خدمة Mozilla AutoPush على رسائل خطأ رائعة. إذا واجهتك مشكلة غير متأكدين من المشكلة، ثم جرب في Firefox لمعرفة ما إذا الحصول على رسالة خطأ أكثر فائدة.
مشاكل التفويض
تُعد مشاكل التفويض واحدة من أكثر المشاكل شيوعًا التي يواجهها المطوّرون عند بدءًا من الدفع عبر الويب. عادةً ما تكون هذه مشكلة في تهيئة مفاتيح خادم التطبيق (المعروفة أيضًا باسم مفاتيح VAPID) .
تتمثل أسهل طريقة لدعم إرسال المعلومات في كل من Firefox وChrome في تقديم
"applicationServerKey
" في مكالمة "subscribe()
" الجانب السلبي هو أن
سيؤدي أي اختلاف بين الواجهة الأمامية ومفاتيح الخادم إلى حدوث
خطأ في التفويض.
على Chrome و"المراسلة عبر السحابة الإلكترونية من Firebase"
بالنسبة إلى Chrome الذي يستخدم "المراسلة عبر السحابة الإلكترونية من Firebase" كخدمة إرسال، ستتلقى
رد واحد (UnauthorizedRegistration
) من خدمة "المراسلة عبر السحابة الإلكترونية من Firebase" لمجموعة مختلفة من
الأخطاء، وجميعها تتضمن مفاتيح خادم التطبيقات.
ستظهر لك رسالة الخطأ "UnauthorizedRegistration
" في أيّ مما يلي:
الحالات:
- في حال تعذّر تحديد عنوان
Authorization
في الطلب المُرسَل إلى خدمة "المراسلة عبر السحابة الإلكترونية من Firebase". - لا يتطابق مفتاح التطبيق المُستخدَم لاشتراك المستخدم مع المفتاح المستخدَم. للتوقيع على عنوان التفويض.
- تاريخ انتهاء الصلاحية غير صالح في JWT، أي أنّ انتهاء الصلاحية يتجاوز 24 ساعة أو انتهت صلاحية JWT.
- JWT مكتوب بشكل غير صحيح أو يحتوي على قيم غير صالحة.
يبدو الرد الكامل عن الخطأ على النحو التالي:
<html>
<head>
<title>UnauthorizedRegistration</title>
</head>
<body bgcolor="#FFFFFF" text="#000000">
<h1>UnauthorizedRegistration</h1>
<h2>Error 400</h2>
</body>
</html>
إذا تلقّيت رسالة الخطأ هذه في Chrome، ننصحك باختبارها في Firefox لمعرفة ما إذا كان سيوفر المزيد من الرؤى حول المشكلة.
Firefox وMozilla AutoPush
يقدم كل من فايرفوكس وMozilla AutoPush مجموعة سهلة من رسائل الخطأ
Authorization
مشكلة
ستتلقى أيضًا ردًّا بالخطأ Unauthorized
من
Mozilla AutoPush إذا لم يتم تضمين العنوان Authorization
في عملية الإرسال
طلبك.
{
"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، ستتلقّى أيضًا
Unauthorized
مع رسالة توضح أن الرمز المميز يحتوي على
منتهي الصلاحية.
{
"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"
}
إذا اختلفت مفاتيح خادم التطبيق بين وقت تغيير المستخدم
تم الاشتراك وعندما تم توقيع عنوان التفويض، تمت إضافة Not Found
:
{
"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"
}
وأخيرًا، إذا كانت لديك قيمة غير صالحة في JWT (على سبيل المثال، إذا كانت قيمة "alg" قيمة غير متوقعة)، ستتلقى الخطأ التالي من Mozilla الدفع التلقائي:
{
"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
هناك مجموعة من المشكلات التي قد ينتج عنها رمز استجابة بخلاف 201 من خدمة الدفع عبر الإنترنت. في ما يلي قائمة برموز حالة HTTP ومعنى كل منها في ما يتعلق إلى الدفع عبر الويب.
رمز الحالة | الوصف |
---|---|
429 | عدد الطلبات كبير جدًا. وصل خادم التطبيق إلى الحد الأقصى لمعدّل الاستخدام من خلال خدمة الدفع عبر الإنترنت. يجب أن يتضمّن الردّ من الخدمة رسالة "إعادة المحاولة بعد". رأس الصفحة إلى تشير إلى المدة قبل إجراء طلب آخر. |
400 | الطلب غير صالح. أحد الرؤوس غير صالح أو تم تنسيقه بشكل سيئ. |
404 | غير موجودة وفي هذه الحالة يجب عليك حذف PushSUBSCRIPTION من الواجهة الخلفية وانتظار الحصول على فرصة لإعادة اشتراك المستخدم. |
410 | اختفت لم يعُد الاشتراك صالحًا ويجب إزالته من الواجهة الخلفية. يمكن إعادة إنتاج ذلك من خلال استدعاء "unsubscribe()" على `PushSubscription`. |
413 | حجم الحمولة كبير جدًا. الحد الأدنى لحجم الحمولة في خدمة الدفع حجم الدعم هو 4096 بايت (أو 4 كيلوبايت). ويمكن أن يؤدي أي حجم أكبر إلى حدوث هذا الخطأ. |
في حال عدم إدراج رمز حالة HTTP في هذه القائمة وعدم ظهور رسالة الخطأ يمكنك مراجعة بروتوكول Web Push المواصفات لمعرفة ما إذا كانت تتم الإشارة إلى رمز الحالة مع سيناريو متى يمكن تنبؤي.
مشكلة تشفير الحمولة
إذا كان بإمكانك إرسال رسالة فورية (مثل إرسال رسالة إلى موقع إلكتروني) خدمة الدفع وتلقي رمز الاستجابة 201) لكن حدث الدفع لا يبدأ أبدًا إلى عامل الخدمة، فهذا يشير عادةً إلى فشل المتصفح فك تشفير الرسالة التي يتلقاها.
وفي هذه الحالة، من المفترض أن تظهر رسالة خطأ في "أدوات مطوري البرامج" في Firefox وحدة التحكم مثل:
للتحقق مما إذا كانت هذه هي المشكلة في Chrome، قم بما يلي:
- انتقل إلى about://gcm-internals وانقر على "بدء التسجيل" .
- شغِّل رسالة فورية وابحث ضمن "سجلّ تعذُّر فك تشفير الرسالة".
إذا حدثت مشكلة في فك تشفير الحمولة، ستظهر لك رسالة خطأ
مشابه لتلك المعروضة أعلاه. (لاحِظ AES-GCM decryption failed
رسالة في عمود التفاصيل).
هناك بعض الأدوات التي قد تساعد في تصحيح أخطاء التشفير إذا كانت المشكلة هي:
- أداة Push Encryption Verifier التي أنشأها "بيتر بيفيرلو"
- Web Push: صفحة اختبار تشفير البيانات من Mozilla
مشكلة في الاتصال
إذا لم تكن تتلقى حدثًا فوريًا في عامل الخدمة وليس لديك أي أخطاء في فك التشفير، فقد يتعذّر على المتصفح الاتصال خدمة الدفع.
في Chrome، يمكنك التحقق مما إذا كان المتصفح يتلقى الرسائل من خلال فحص
"سجل الرسائل المستلمة" (sic) باللغة about://gcm-internals
.
إذا لم تتمكن من رؤية الرسالة تصل في الوقت المناسب، فتأكد من
حالة اتصال متصفحك هي CONNECTED
:
إذا لم يكن الحساب "مرتبطًا"، قد تحتاج إلى حذف ملفك الشخصي الحالي و إنشاء حساب جديد إذا كان ذلك ما زال لا يحل المشكلة، يُرجى تقديم تقرير خطأ كما هو مقترح أدناه.
جارٍ رفع تقارير الأخطاء
إذا لم يساعد أي مما سبق في حل مشكلتك ولم تكن هناك أي إشارة إلى المشكلة مشكلة، يُرجى طرح مشكلة في المتصفح الذي تستخدمه مشكلة في:
بالنسبة إلى Chrome، يمكنك طرح المشكلة هنا: https://bugs.chromium.org/p/chromium/issues/list بالنسبة إلى Firefox، يجب طرح المشكلة على: https://bugzilla.mozilla.org/
لتقديم تقرير خطأ جيد، يجب تقديم التفاصيل التالية:
- المتصفّحات التي اختبرتها (مثل الإصدار 50 من Chrome أو الإصدار 51 من Chrome أو Firefox الإصدار 50، الإصدار 51 من Firefox).
- مثال
PushSubscription
يوضح المشكلة. - ضمِّن أي أمثلة على الطلبات (مثل محتوى طلبات الشبكة إلى الدفعة). الخدمة، بما في ذلك العناوين).
- ضمِّن أي أمثلة للردود من طلبات الشبكة أيضًا.
إذا كان بإمكانك تقديم مثال قابل لإعادة الإنتاج، إما على رمز المصدر أو موقع ويب مستضاف فإنها غالبًا ما تُسرّع عملية تشخيص المشكلة وحلها.
الخطوات التالية
- نظرة عامة على الإشعارات الفورية على الويب
- طريقة عمل Push
- اشتراك مستخدم
- تجربة المستخدم المتعلقة بالأذونات
- إرسال الرسائل باستخدام مكتبات Web Push
- بروتوكول Web Push
- التعامل مع الأحداث الفورية
- عرض إشعار
- سلوك الإشعار
- أنماط الإشعارات الشائعة
- الأسئلة الشائعة حول الإشعارات الفورية
- المشكلات الشائعة والإبلاغ عن الأخطاء