عندما يُعلن مكون سمة عن أصول في ملف about.json الخاص به، يقوم Discourse بتخزينها وتقديمها تحت المسار /uploads/.
إذا تم تمكين إعداد الموقع “منع المجهولين من تنزيل الملفات”، فإن أصول السمة هذه تُرجع 404 للمستخدمين المجهولين لأنها تُعامل كتحميلات محمية.
يمكن أن يؤدي هذا إلى تعطل أي سمة أو مكون يقوم بتحميل JavaScript الخاص به ديناميكيًا - على سبيل المثال، مكون معاينات قائمة المواضيع.
خطوات التكرار
- قم بتثبيت مكون معاينات قائمة المواضيع (
https://github.com/merefield/discourse-tc-topic-list-previews). - تحقق من أنه يتم تحميله بشكل صحيح لكل من المستخدمين المسجلين والمجهولين.
- قم بتمكين إعداد الموقع منع المجهولين من تنزيل الملفات.
- قم بزيارة الصفحة الرئيسية للمنتدى كمستخدم مسجل خروجه وتحقق من وحدة تحكم المتصفح.
السلوك الملاحظ
-
الطلبات للملفات مثل
/uploads/default/original/1X/d8ce366bd7aad8f9fc7b26b08aecc855dd6d425c.jsتُرجع 404 غير موجود (في الواقع صفحة خطأ HTML).
-
تعرض وحدة تحكم المتصفح:
Refused to execute script ... because its MIME type ('text/html') is not executable -
المكونات التي تعتمد على هذا الملف (مثل
preview-edits.gjsفي معاينات قائمة المواضيع) تفشل في التشغيل، مما يتسبب في مشاكل في التخطيط.
السلوك المتوقع
يجب أن تكون أصول السمة المعرفة في about.json قابلة للوصول بشكل عام دائمًا، بغض النظر عن إعداد “منع المجهولين من تنزيل الملفات”.
إنها أصول ثابتة، وليست تحميلات مستخدم، ويجب ألا ترث قيود الوصول على مستوى التحميل.
التفاصيل التقنية
-
إصدار Discourse: 3.6.0.beta2 (الأحدث)
-
المكون: معاينات قائمة المواضيع
-
مقتطف
about.jsonذي الصلة:"assets": { "imagesloaded": "assets/imagesloaded.js" } -
أثناء تثبيت السمة، يقوم Discourse بتخزين هذا الملف كـ
Uploadتحت/uploads/default/original/.... -
تمكين قيد المجهولين يتسبب في قيام Discourse بحظر الطلبات لهذا المسار، على الرغم من أنه أصل سمة.
الحل المقترح
يجب أن تكون أصول السمة التي تم تحميلها عبر about.json:
- مقدمة من مسار مخصص (مثل
/theme-assets/أو/assets/)
أو - معفاة من قيد “منع المجهولين من تنزيل الملفات”.
التأثير
يؤثر هذا على أي سمة أو مكون يعتمد على أصول السمة (JS/CSS/صور) التي يتم تحميلها ديناميكيًا في العميل.
يعطل مكونات واجهة المستخدم الرئيسية للزوار المجهولين عند تشغيل قيد تنزيل المجهولين.