كل الإضافات لا تعمل بسبب خطأ CORS بعد الترقية الأخيرة

منذ الأسبوع الماضي، توقفت جميع الإضافات، سواء الأساسية أو المثبتة، عن العمل حتى عند تمكينها على المنتدى الخاص بنا. في البداية، اعتقدت أن الأمر يتعلق بالخطأ المذكور سابقًا https://meta.discourse.org/t/fix-compile-missing-rollup-plugin-bundles-on-demand-in-development/398864/8، لكننا قمنا بتشغيل عدة تحديثات منذ ذلك الحين ولم يحل أي منها المشكلة. حاولت تمكين إضافة غير مستخدمة سابقًا، وهي “ملاحظات المستخدمين” المثبتة مسبقًا، لكن لا توجد خيارات لإضافة ملاحظات لأي مستخدم. حتى مدير Docker توقف، مما يعني أن جميع التحديثات يجب تشغيلها على مستوى الخادم، مما يسمح لشخص واحد فقط بتطبيقها بدلاً من فريق الإدارة.

لقد حاولت البحث عن حل لهذه المشكلة، لكن كل ما وجدته يتعلق بتعطيل الإضافات تلقائيًا أو ما شابه ذلك، وليس محددًا مثل حالتنا.

هل يمكن لأي شخص أن ينصحنا بأي حلول محتملة أو مسارات يجب أن نتبعها؟ نحن نفضل تجنب التراجع عن التحديث، لكن يبدو حتى الآن أن هذا قد يكون الخيار الأخير.

شكرًا لكم دائمًا على دعمكم المستمر :smiley:

إعجابَين (2)

حسناً، يبدو أن هذه مشكلة تتعلق بشبكة تسليم المحتوى (CDN) الخاصة بك:


لقد قمت بتفعيل إضافة تجاهل CORS الخاصة بي، وتم تحميل السكريبتات بنجاح، لكنني لا أرى أي تغييرات مرئية من الإضافات. أنصحك بتجربة ذلك، وإذا نجح الأمر، فيجب عليك تحديد ما يسبب الخطأ في شبكة تسليم المحتوى (CDN) الخاصة بك.

7 إعجابات

شكرًا جزيلاً لك على تخصيص الوقت للنظر في هذا الأمر نيابةً عنا. سنقوم بتشغيل بعض الاختبارات خلال عطلة نهاية الأسبوع وسنقوم بالتحديث بمجرد أن نتمكن من ذلك.

3 إعجابات

أواجه نفس المشكلة مع bunnycdn. كان يعمل بشكل جيد حتى تحديث حديث.

لقد حاولت إضافة .js إلى رؤوس CORS في bunny.net كما هو موضح هنا:

وكما كان الحال آنذاك، لا أفهم سبب بدء هذه المشكلة عند ترقيتي إلى الإصدار 6800ad3adf3ef9c3caeb9a4d849997c7a3dc98d7 الأسبوع الماضي.

4 إعجابات

شكرًا لك يا جاي، لقد كان لدينا “باني” وقد حل الإصلاح الذي ذكرته جميع المشكلات الآن! شكرًا لك وللجميع على المساعدة والدعم في هذا الأمر، عاد منتدانا إلى وضعه الطبيعي. أو ما يمكن اعتباره طبيعيًا :smiley:

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

يسعدنا سماع أنك قد نجحت في حل المشكلة!

في نظام الإضافات الجديد، نستخدم script type="module"، والذي يتطلب تعيين رؤوس CORS الصحيحة. أما نمط script type="text/javascript" القديم فلا يتطلب تلك الرؤوس.

لقد قمنا بنقل أنظمة مختلفة تدريجيًا إلى type="module" على مدار السنوات القليلة الماضية. كانت السمات تستخدمه بالفعل، وكذلك كان highlightjs (وهو ما ذُكر في الموضوع الآخر). كما أن تحميل الخطوط من شبكة CDN يتطلب أيضًا توافقًا مع CORS.

لذلك، ربما كانت هناك بعض الأمور الأخرى معطلة بشكل خفي حتى قبل التغييرات الأخيرة في نظام الإضافات. الآن بعد أن قمت بإعداد تكوين CORS، يجب أن يعمل كل شيء بشكل صحيح مرة أخرى :chefs_kiss:

5 إعجابات

أها. هذا ما لم أكن لأخمنه.

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

تنبيه بسيط للجميع: إذا كنت تستخدم Azure Classic CDN، فقد بدأت هذه المشكلة في الظهور. أنا أحاول تجربة حل من جانب شبكة CDN، ولكن قد أحتاج إلى الانتقال إلى Front Door الفعلي بدلاً من Classic CDN.

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

نعم، تم تأكيد هذه المشكلة أيضًا على Azure Classic CDN.

يتعين عليك إضافة قاعدة جديدة إلى محرك القواعد، وفيما يلي مثال:

"rules": [

                        {

                            "name": "JSCORS",

                            "order": 1,

                            "conditions": [

                                {

                                    "name": "RequestUri",

                                    "parameters": {

                                        "typeName": "DeliveryRuleRequestUriConditionParameters",

                                        "operator": "Contains",

                                        "negateCondition": false,

                                        "matchValues": [

                                            "/assets/js/plugins/"

                                        ],

                                        "transforms": []

                                    }

                                }

                            ],

                            "actions": [

                                {

                                    "name": "ModifyResponseHeader",

                                    "parameters": {

                                        "typeName": "DeliveryRuleHeaderActionParameters",

                                        "headerAction": "Overwrite",

                                        "headerName": "Access-Control-Allow-Origin",

                                        "value": "https://forums.mycoolforum.com"

                                    }

                                },

                                {

                                    "name": "ModifyResponseHeader",

                                    "parameters": {

                                        "typeName": "DeliveryRuleHeaderActionParameters",

                                        "headerAction": "Overwrite",

                                        "headerName": "Content-Type",

                                        "value": "application/javascript"

                                    }

                                },

                                {

                                    "name": "CacheExpiration",

                                    "parameters": {

                                        "typeName": "DeliveryRuleCacheExpirationActionParameters",

                                        "cacheBehavior": "BypassCache",

                                        "cacheType": "All"

                                    }

                                }

                            ]

غريب، هذه المشكلة لم تؤثر على القوالب، بل على الإضافات فقط بالنسبة لنا.

هل توجد مكان للعثور على إرشادات أو توجيهات بشأن هذه التغييرات الأخيرة المتعلقة بـ CORS لأولئك الذين يستخدمون Cloudflare؟

@pfaffman @TomoftheFog @tanya_byrne @denvergeeks، هل يمكنكم تأكيد كيفية تكوين أصولكم؟ هل لديكم فقط شبكة توصيل محتوى (CDN) وخادم التطبيق؟ أم أنكم تخزنون الأصول أيضًا على S3 أو على تخزين متوافق مع S3؟

إذا كنتم تستخدمون S3 أو تخزينًا متوافقًا مع S3، فللأسف فإن الطريقة الموثوقة الوحيدة هي إضافة بعض التكوينات الخاصة بشبكة توصيل المحتوى (CDN). لقد افترضت أن هذا الموضوع يتعلق بأصول S3، لكنني الآن لست متأكدًا؟

بالنسبة للأشخاص الذين يستخدمون شبكة توصيل محتوى (CDN) بسيطة مقابل خادم التطبيق، لا ينبغي أن يكون هناك أي عمل تكوين إضافي مطلوب. يجب أن تعمل الأمور “بشكل تلقائي”، تمامًا مثل حزم theme-javascripts وhightlightjs. لكن يبدو أننا كنا نفتقر بالفعل إلى الرأس (header) في تكوين NGINX الافتراضي لدينا. نعتذر عن ذلك!

هذا يجب أن يعيد الأمور للعمل مرة أخرى:

بمجرد دمج هذا التعديل، ستكون هناك حاجة لتشغيل أمر ./launcher rebuild app ليصبح ساري المفعول. لا يتم تطبيق تغييرات تكوين NGINX أثناء تحديثات واجهة المستخدم.

3 إعجابات

تمت إضافة هذه المعلومات إلى الموضوع الرئيسي:

نعتذر عن هذا الاضطراب! كان ينبغي علينا إجراء اختبارات أكثر شمولاً مع تكوينات مختلفة لشبكات توصيل المحتوى (CDN). يرجى إخبارنا إذا كنت لا تزال تواجه أي مشاكل بعد إعادة البناء.

إعجابَين (2)

تأكيد أننا لا نستخدم S3

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

جميع المواقع التي أعرفها والتي تظهر فيها المشكلة مضافة على S3. كانت بعض شبكات تسليم المحتوى (CDNs) تحتوي بالفعل على JavaScript في القائمة، بينما لم يكن بعضها الآخر. لا أعرف السبب في ذلك؛ ربما تغيرت الإعدادات الافتراضية على مر السنين؟

3 إعجابات

نعتذر عن التأخر في الرد، نحن نستخدم S3 بالفعل.

إعجابَين (2)

واجهتُ صعوبة في جعل إعدادات CORS في Cloudflare R2 تعمل مع نطاق مخصص لهذا الغرض. انتهى بي الأمر بحل المشكلة بالقوة من خلال استخدام قاعدة تحويل الرؤوس لإدراج الرأس الصحيح دائمًا لنطاق شبكة توصيل المحتوى (CDN) الخاص بي. فقط في حال كان هذا مفيدًا لشخص آخر.

لقد اكتشفنا أيضًا مشكلة أخرى منذ ظهور هذه المشكلة: لا يستطيع بعض المستخدمين رؤية صور الرموز التعبيرية عند استخدام زر تنسيق النص المُعد مسبقًا في Markdown. يحاول النظام تحميل highlight-js ويظهر خطأ يشير إلى فشل CORS:

غير متأكد مما إذا كانت هذه المشكلة من جانبنا فقط، لكن أردنا إخطار الجميع في حال كانت مرتبطة بالمشكلة السابقة.