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

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

على أي حال.

مستخدمو أندرويد عندي لا يمكنهم رؤية لوحة المفاتيح الافتراضية عند استخدام محرر النص الغني. عند التحويل إلى Markdown يعمل كل شيء بشكل سليم. أما أجهزة iPad وiPhone (عبر Safari/PWA، وDiscourseHub) فتبقى عالقة في وضع Markdown ولا يمكنها التحويل إلى محرر النص الغني (RTE).

بدأت هذه المشكلة قبل يومين على ما أظن. مستخدمو منتدائي يميلون إلى الانتظار قبل أن يخبروني بأن شيئًا ما معطوب.

ما الذي يمكنني فعله بعد ذلك… استضافة ذاتية، حاويتان، على أحدث إصدارات وأقوم بالترقية يوميًا، وأحدث إصدار كان عمره 20 دقيقة فقط وقت كتابة هذا الموضوع، ووضع الآمان لا يفيد.

ما خطوتي التالية؟ لا يمكنني الوصول إلى وحدة التحكم (Console) أو الاطلاع على الأخطاء المحتملة على الأجهزة المحمولة.

نعم يمكن، لكنك بحاجة إلى توصيل الجهاز بلابتوب.

لقد قمت بذلك مع جهاز اللوحي الخاص بي (أندرويد، والمشكلة هي نفسها المذكورة أعلاه) وأرى

(index):1 Access to script at 'https://cdnfoorumi.katiska.eu/assets/br/chunk-coedl1gv.digested.js' from origin 'https://foorumi.katiska.eu' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
prosemirror-editor-opfbo6zd.digested.js:1  GET https://cdnfoorumi.katiska.eu/assets/br/chunk-coedl1gv.digested.js net::ERR_FAILED 200 (OK)
d-editor.gjs:212 Uncaught (in promise) TypeError: Failed to fetch dynamically imported module: https://cdnfoorumi.katiska.eu/assets/br/prosemirror-editor-opfbo6zd.digested.js

Prosemirror هو محرر النصوص الغني (RTEditor). لكنني لا أستطيع تقديم مساعدة أكثر من مشاركة رسالة الخطأ التي أراها.


خارج الموضوع: شكرًا على الضحك بسبب تصنيف «قبلات وحيوانات» (للأسف الترجمة الإنجليزية تقول «قطط» بدلاً من ذلك، لذا سألتزم بالترجمة الألمانية :wink: )

أضفت:

DISCOURSE_ENABLE_CORS: true

ثم قمت بإعداد web_only.yml وأضفت إلى CORS origins العناوين https://foorumi.katiska.eu و https://cdnfoorumi.katiska.eu.

لم ينجح الأمر.

ثم قمت بتشغيل الأمر التالي:

curl -sI -H 'Origin: https://foorumi.katiska.eu' 'https://cdnfoorumi.katiska.eu/assets/br/chunk-coedllgv.digested.js'

HTTP/2 403 
content-type: application/xml
access-control-allow-origin: *
access-control-allow-methods: GET, HEAD
access-control-max-age: 3000
server: AmazonS3
date: Thu, 10 Sep 2026 14:13:35 GMT
x-cache: Error from cloudfront
via: 1.1 <characters>.cloudfront.net (CloudFront)
x-amz-cf-pop: HEL51-P1
x-amz-cf-id: <characters>

لا أفهم ما أراه هنا، لكن هل المشكلة تكمن في S3 وإعداداتي هناك؟ وإذا كان الأمر كذلك، فلماذا بدأ هذا مؤخرًا؟ قد يكون أحد الأعراض هو أنني منذ الأمس لم أعد قادرًا على كتابة أي ملاحظات على اللوحات (boards-notes).

لكن إذا كان CORS هو المشكلة، فلماذا تتأثر هذه العناصر فقط؟


لماذا، باسم الآلهة القدماء والجُدد، استخدم الذكاء الاصطناعي كلمة Küsse في هذا السياق :rofl:

لا أعتقد أن هناك أي تغييرات حديثة في 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:

لكنني لا أستخدم Cloudfront، لذا هل يجب أن يأتي من AWS؟

هل أنت متأكد؟ :eyes:

❯ host cdnfoorumi.katiska.eu
cdnfoorumi.katiska.eu is an alias for djpzno7cbajfp.cloudfront.net.

تعديل: للتوضيح، نحن نتحدث هنا عن AWS Cloudfront وليس Cloudflare (الأسماء متشابهة جداً! :sweat_smile:)

نعم، هذا صحيح — نعم، أنا أستخدم AWS Cloudfront :laughing: إن لم أكن مخطئًا، فمطلوب استخدام نطاق خاص بك. أو شيء من هذا القبيل.

نعم تمامًا - مطلوب للنطاق المخصص، كما أنه يجعل الأمور أرخص (تكاليف الإخراج عبر Cloudfront أقل من تكاليف الإخراج المباشر من S3، إن لم أكن مخطئًا)