حجب المشاركات في المنتدى: ظهور نافذة خطأ 418 أو 502 Bad Gateway

عند محاولة إنشاء مشاركة في المنتدى، يتم اعتراضها مع ظهور نافذة منبثقة تعرض خطأ 418 أو رسالة “502 Bad Gateway”. هذه الرسالة غير دقيقة إلى حد ما، لذا يمكن تحسينها في موقع محدد داخل المنتدى لتكون أكثر تفصيلاً وتوضيحاً للمستخدم.

إذا انتقل المستخدم إلى أدوات المطوّر في المتصفح (النقر بزر الفأرة الأيمن > فحص > وحدة التحكم)، فعادةً ما يتم تسجيل رسالة خطأ هناك. كما يمكن العثور عليها في /logs (مرئية للمشرفين).

هل يوجد طريقة لتعديل هذا تنبيه الخطأ؟ على سبيل المثال، تغيير النص في هذه النافذة المنبثقة إلى “خطأ في الشبكة/البوابة”.

قد يكون هذا مشكلة أعمق. الأخطاء من هذا النوع ليست شائعة إلى هذا الحد.

أعتقد أنني اكتشفت مصدر هذه الرسالة.

عندما لا يستطيع Discourse العثور على رسالة خطأ منظمة في الاستجابة، فإنه يعتمد على رمز حالة HTTP وstatusText:

if (!parsedError) {
  if (error.status && error.status >= 400) {
    parsedError = error.status + " " + error.statusText;
  }
}

مصدر Discourse: احتياطي أخطاء HTTP.[1]

هذا يعني أن 502 Bad Gateway ليست إدخالًا عاديًا في نص الموقع (Site Text). بل يتم إنشاؤها من حالة الاستجابة HTTP ونص الحالة.

ثم تُمرر الرسالة الناتجة إلى مربع حوار تنبيه Discourse هنا.[2]

يستخدم Discourse بالفعل نصوصًا مترجمة عندما يعيد الخادم error_key أو خطأً منظمًا آخر. ومع ذلك، في حالة استجابة 502 خام، يصل الأمر إلى آلية الاحتياط المذكورة أعلاه.

يمكن للإضافة (Plugin) استبدال الرسالة قبل عرض مربع حوار الخطأ الخاص بها، لكنني لا أرى خطافًا (Hook) عامًا لواجهة برمجة تطبيقات الإضافة (Plugin API) لتغيير هذا الاحتياطي على مستوى النظام. على الأرجح، ستكون هناك حاجة إلى تغيير في النواة (Core) أو خطاف جديد لواجهة برمجة تطبيقات الإضافة لجعل هذه رسائل الاحتياط HTTP قابلة للتخصيص/الترجمة على مستوى النظام.


  1. ↩︎

  2. ↩︎

إعجاب واحد (1)