TL;DR: يعرض Discourse رسالة “خطأ في التضمين” بغض النظر عن المضيفين الذين أسمح بهم في إعدادات التضمين.
لدي موقع منشور على foo.com يقوم بتضمين تعليقات من منتدى Discourse الموجود على forum.foo.com، ويعمل هذا بشكل جيد. عند الانتقال إلى عنوان مثل https://foo.com/blog/2019-11-22/foo-0.9.6-released، أرى التعليقات المضمنة بشكل صحيح. في هذه الحالة، يبدو كود السكربت الخاص بالتضمين في مصدر الصفحة كالتالي:
<div id='discourse-comments'></div>
<script type="text/javascript">
DiscourseEmbed = { discourseUrl: 'https://forum.foo.com/', discourseEmbedUrl: 'https://foo.com/blog/2019-11-22/foo-0.9.6-released' };
(function() {
var d = document.createElement('script'); d.type = 'text/javascript'; d.async = true;
d.src = DiscourseEmbed.discourseUrl + 'javascripts/embed.js';
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(d);
})();
</script>
لدي أيضًا نسخة تطوير من الموقع تعمل على جهاز الكمبيوتر المحلي الخاص بي (localhost)، وأواجه فيها مشاكل في التضمين - حيث تستمر في إظهار رسالة “خطأ في التضمين” بدلاً من عرض التعليقات داخل HTML الذي يتم إنشاؤه وإرجاعه من المنتدى. أي أنني أرى شعار المنتدى ورابطًا إليه في الزاوية العلوية اليمنى من منطقة التضمين، لكن بدلاً من سرد التعليقات، أرى فقط رسالة الخطأ هذه.
عند الانتقال إلى عنوان مثل http://localhost:1313/blog/2019-11-22-foo-0.9.6-released/، وهو الصفحة المكافئة للموقع المنتج، يبدو كود السكربت الخاص بالتضمين في مصدر الصفحة كالتالي:
<div id='discourse-comments'></div>
<script type="text/javascript">
DiscourseEmbed = { discourseUrl: 'https://forum.foo.com/', discourseEmbedUrl: 'http://localhost:1313/blog/2019-11-22-foo-0.9.6-released/' };
(function() {
var d = document.createElement('script'); d.type = 'text/javascript'; d.async = true;
d.src = DiscourseEmbed.discourseUrl + 'javascripts/embed.js';
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(d);
})();
</script>
جربت ذلك مع وجود شرطة مائلة (/) في نهاية إعداد discourseEmbedUrl وبدونها، ولم يفرق ذلك شيئًا.
لا أملك وصولاً مباشرًا إلى الخادم الذي يعمل عليه المنتدى، لكنني دخلت إلى لوحة تحكم المنتدى وحاولت إضافة مجموعة من المضيفين المسموح بهم في إعدادات التضمين. الإعدادات الحالية، للموقع المنتج الذي يعمل التضمين فيه بشكل صحيح، هي:
"المضيفون المسموح بهم"، "اسم الفئة"، "قائمة المسارات المسموح بها"، "النشر في التصنيف"
foo.com، <فارغ>، /blog/.*، blog
ما أضفته لجعله يعمل مع نسختي التطوير المحلية من الموقع هو:
"المضيفون المسموح بهم"، "اسم الفئة"، "قائمة المسارات المسموح بها"، "النشر في التصنيف"
localhost، <فارغ>، /blog/.*، blog
localhost:1313، <فارغ>، /blog/.*، blog
<عنوان IP الخارجي/العام كما يراه خادم المنتدى>، <فارغ>، /blog/.*، blog
<عنوان IP الخارجي/العام كما يراه خادم المنتدى>:1313، <فارغ>، /blog/.*، blog
لكن لا شيء من ذلك يجعلها تعمل، فأنا ما زلت أحصل على نفس رسالة “خطأ في التضمين”.
أتردد في الغوص في الكود المصدري ومحاولة تصحيح هذا الخطأ، وأفضل الحصول على بعض التوضيحات حول ما يتحقق منه Discourse عندما يقرر توليد رسالة الخطأ هذه. هل يمكن لأحد إخباري بذلك، وكيفية إصلاح هذا؟ يجب أن يكون الأمر مباشرًا إلى حد ما، لكن Discourse يتصرف هنا كصندوق أسود.
لقد قرأت كل ما ورد في Embed Discourse comments on another website via Javascript لكنها لا تقدم معلومات أكثر فائدة.

