هل أنت متأكد من أن معامل الاستعلام ?discuss=1 ليس هو سبب المشكلة؟
هل توجد أي أذونات أمان على فئة المدونة الخاصة بك، أم أنها مضبوطة للسماح لمجموعة “الجميع” بإنشاء الردود / الرد عليها / المشاهدة؟
ما هي نسخة Discourse التي يعمل عليها موقعك؟
أيضًا، ما هي رسالة الخطأ الكاملة التي تظهر بعد نص Failed to execute postMessage on DOMWindow؟ أتوقع أن تكون شيئًا مثل The target origin provided (<target_url>) does not match the recipient window's origin (<origin_url>).
أنا متأكد من أن الأمر لا علاقة له بمعلمة ?discuss=1. لقد واجهت نفس المشكلة دونها، لكن الموقع يعمل مباشرةً ولا أريد إظهار كتلة خطأ ضخمة لمستخدمينا. ولكن بما أنك طلبت، فقد قمت بتعديل الموقع وقمت بتفعيل تضمين JavaScript في واحدة فقط من مشاركاتنا القديمة جدًا حيث لا يتوقع وجود زوار. إذن لا توجد سلسلة استعلام. (لقد قمت بتحديث منشوري الأول ليعكس هذا)
VM469 embed-application-9cef8308c816fc1d83137e63d6c556c6cc2b68fe2b6e5ce16cca6766ba2c0ae4.js:1 فشل تنفيذ ‘postMessage’ على ‘DOMWindow’: الأصل المستهدف المقدم (‘https://discuss.royaleapi.com’) لا يتطابق مع أصل نافذة المستلم (‘https://royaleapi.com’).
فئة المدونة
هذه فئة عامة مفتوحة للجميع. لقد جعلتها كذلك بالفعل، لذا لا توجد مشاركات. لقد أنشأت منشورًا جديدًا الآن لأرى ما إذا كان وجود عنصر واحد في الفئة مطلوبًا.
غير متأكد مما إذا كان هذا قد يكون ذا صلة، لكنني أرى بعض الأخطاء في السجلات، غير أنني غير متأكد مما هي:
[الجمعة 06 نوفمبر 2020 04:47:14 م ت ع م] لم تتغير النطاقات.
[الجمعة 06 نوفمبر 2020 04:47:14 م ت ع م] تم التجاوز، وقت التجديد التالي هو: الاثنين 04 يناير 2021 08:07:59 ص ت ع م
[الجمعة 06 نوفمبر 2020 04:47:14 م ت ع م] أضف '--force' لإجبار التجديد.
[الجمعة 06 نوفمبر 2020 04:47:14 م ت ع م] جاري تثبيت المفتاح إلى:/shared/ssl/discuss.royaleapi.com_ecc.key
[الجمعة 06 نوفمبر 2020 04:47:14 م ت ع م] جاري تثبيت سلسلة الشهادات الكاملة إلى:/shared/ssl/discuss.royaleapi.com_ecc.cer
[الجمعة 06 نوفمبر 2020 04:47:14 م ت ع م] تنفيذ أمر إعادة التحميل: sv reload nginx
تحذير: nginx: غير قادر على فتح supervise/ok: الملف غير موجود
[الجمعة 06 نوفمبر 2020 04:47:14 م ت ع م] خطأ في إعادة التحميل لـ :
تم بدء runsvdir، معرف العملية هو 663
ok: run: redis: (معرف العملية 677) 0 ثوانٍ
chgrp: مجموعة غير صالحة: 'syslog'
ok: run: postgres: (معرف العملية 675) 0 ثوانٍ
rsyslogd: imklog: غير قادر على فتح سجل النواة (/proc/kmsg): العملية غير مسموح بها.
rsyslogd: فشل تفعيل وحدة imklog [v8.1901.0 جرب https://www.rsyslog.com/e/2145 ]
معرف عملية supervisor: 671 معرف عملية unicorn: 702
كما أرجو إخباري إذا كان ينبغي إخفاء أي من هذه المعلومات. وبما أنني نشرت بالفعل الرابط، فقد اعتقدت أنه لا ضرر من ذلك، حيث تبدو مواقع الملفات هذه قياسية للإعداد.
نعم، كانت لقطة الشاشة لدي تظهر المشكلة، لكنني قمت بتغييرها إلى /blog/.* بالفعل بعد أن أدركت أنها تستخدم على الأرجح تعبيرًا نمطيًا. ومع ذلك، لا تزال المشكلة قائمة.
يبدو أن الخطأ الذي ظهر في وحدة التحكم يشبه مشكلة CORS أكثر من أي شيء آخر.
_embed-application-9cef8308c816fc1d83137e63d6c556c6cc2b68fe2b6e5ce16cca6766ba2c0ae4.js:7
فشل تنفيذ 'postMessage' على 'DOMWindow':
الأصل المستهدف المقدم ('https://discuss.royaleapi.com')
لا يتطابق مع أصل نافذة المستلم ('https://royaleapi.com').
في صفحة إعدادات تضمين Discourse، هل قمت بتعيين إعداد “اسم المستخدم لإنشاء المواضيع”؟ إذا لم يتم تعيينه، فستحصل على خطأ “فشل تنفيذ postMessage على DOMWindow”.
هل يمكن أن يكون هذا هو السبب؟ يبدو إذن أن النصوص البرمجية نفسها لا تحتوي على رؤوس access-control-allow-origin على الرغم من أن النطاق يحتوي عليها. هل يجب أن أحاول استخدام إعدادات nginx الخاصة بي وعدم استخدام ما هو مدمج في صورة docker؟
هذا مذهل — لا أستطيع تصديق أنني دخلت في متاهة محاولة تحديد ما إذا كانت المشكلة متعلقة بـ CORS بينما هي في الواقع تتعلق بطلبات HEAD. ربما يجب تحديد ذلك في مكان ما في الوثائق.
بصراحة، لم أكن أدرك أن هناك خدمات تعتمد على وجوده. لم كنتُ سأقوم بـ “تعطيل” الدالة لو كنتُ أعرف أنها مطلوبة.
كما أن من المهم التوضيح: ليس الأمر كما لو أنني أبذل جهدًا متعمدًا لتعطيل الدالة. بل ببساطة لم أكتب مسارات تدعم طريقة HEAD. لذا، ما فعلته الآن هو إضافة دالة للرد على جميع طلبات HEAD الموجهة إلى نقاط النهاية الصالحة.
نعم، من فضلك: قم بتحديث قسم استكشاف الأخطاء وإصلاحها بهذا. أنا عالق في مشاكل أمان CORS/الإطار، وأرجو أن يساعد اتباع خطوات المستخدم @seeminglee. كيف يمكنني تمكين طلبات HEAD؟
@willywongi قد يكون هناك لبس بشأن مشكلتي، لذا دعني أشرح ما حدث.
اتبعت الخطوات لكنني لم أستطع دمج التعليقات في الموقع.
اتضح أن تطبيق Discourse الخاص بي (المُثبَّت على نطاق مختلف) غير قادر على «التحقق» من وجود منشورات مدونتي لأن موقعي الرئيسي لم يُنفّذ طريقة HEAD على تلك الروابط.
بعد تنفيذ معالج لطلبات HEAD لتلك المسارات، عمل الدمج بنجاح.
للتحقق مما إذا كانت لديك نفس مشكلتي، قم بتشغيل أمر curl ضد الرابط الذي يحتوي على منشور المدونة / أو حيث تريد ظهور تضمين التعليقات.
على سبيل المثال، إذا كان رابطك هو https://example.com/blog/awesome-post، انتقل إلى طرفية الأوامر (Terminal) وقم بتشغيل:
curl https://example.com/blog/awesome-post -I
سيقوم هذا الأمر بإرسال طلب HEAD إلى ذلك الرابط ويعطيك النتيجة. إذا كان رمز الحالة أي شيء غير 200 (وهو الرقم في السطر الأول من الاستجابة)، مثل:
HTTP/2 200
فإن الخادم لا يُنفّذ طريقة HEAD (أو أن هناك مشكلة في الاستجابة لها).
إذا كانت الاستجابة هي 200، فإن مشكلة الدمج لا علاقة لها بطلبات HEAD.
واجهت هذا وتبين أن المشكلة كانت أنني غيرت الطريقة التي تم بها استدعاء “اسم المستخدم لإنشاء الموضوع” ونسيت تحديثه في صفحة التضمين، على ما يبدو حاول إنشاء الموضوع ولم يتمكن من العثور على اسم المستخدم. بمجرد تحديثه في صفحة إعدادات التضمين، اختفى الخطأ.