أجهزة أندرويد لا يمكنها استخدام RTE، وأجهزة آبل لا يمكنها تغيير وضع المُصيغ

لا أعتقد أن هناك أي تغييرات حديثة في Discourse تسببت في هذه المشكلة. ومع ذلك، يعاني S3 من سلوك غريب طويل الأمد فيما يتعلق بـ CORS، مما قد يؤدي إلى تخزين CDN لنسخة من الأصل (asset) بدون ترويسة Access-Control-Allow-Origin. وإذا كان الأمر يتعلق بمشكلة تخزين مؤقت (bad-cache)، فقد يفسر ذلك لماذا يؤثر الأمر على بعض مستخدميك فقط (على الأرجح بناءً على موقعهم الجغرافي).

كما أذكر - لن يقدّم S3 ترويسة Access-Control-Allow-Origin إلا للطلبات التي ترسل ترويسة Origin (أي تلك الصادرة عن متصفح ويب عادي). وعند إغفال Access-Control-Allow-Origin، لا يقدم S3 ترويسة Vary: origin في استجابته. وبالتالي: إذا كان الطلب الأول لمعطى الأصل (asset) صادراً عن سياق غير متصفح ويب (مثل curl، أو أحد الزواحف الويب)، فقد يخزّن CDN النسخة التي لا تحتوي على ترويسة CORS. أمر مزعج جداً!

الإعداد DISCOURSE_CORS لن يكون مفيداً على الإطلاق هنا. فهو ذو صلة بخادم التطبيق فقط، وليس بـ S3.

في استضافتنا، نتعامل مع هذه المشكلة من خلال تكوين Cloudfront لإضافة Access-Control-Allow-Origin: * إلى جميع الاستجابات. وهذا يضمن أن السلوك الغريب لـ S3 لا يمكنه التسبب في تخزين نتيجة خاطئة.

بديل لذلك، يمكنك تكوين Cloudfront لتضمين ترويسة طلب Origin في مفتاح التخزين المؤقت (cache key)، مما سيحافظ على فصل الاستجابات غير الداعمة لـ CORS عن الاستجابات الداعمة لها.

توجد لدى أمازون مجموعة من الوثائق حول CORS هنا. كان لدي هذا الرابط في ملاحظاتي، والذي يبدو أنه موضوع في منتدى حول هذه المشكلة تحديداً… لكن يبدو أنهم حذفوه :cry: