التضمين معطل في 3.0.4 (مستقر)

لدي شك في أن هذا التغيير

قد أفسد طريقة استخدامي للتضمين على موقعي. هل يمكن لأحد أن يشير لي إلى ما تم تغييره بالضبط؟

أستخدم Discourse لإنشاء مواضيع لمنشورات على مدونتي (كنظام تعليقات). ينقسم موقعي إلى جزأين للغتين، لذلك أستخدم مضيفين لتصفية المنشورات الإنجليزية (/blog/somepost) والألمانية (/de/blog/somepost) إلى فئات منتديات مختلفة.

لم تعد المنشورات من الجانب الألماني للموقع تُضمّن منذ تحديث Discourse الخاص بي. أفترض أن الأمر يتعلق بالتصحيح المذكور أعلاه.

سأكون ممتنًا لأي مساعدة في محاولة حل هذه المشكلة.

إعجابَين (2)

من ناحية أخرى، قد يكون الأمر متعلقًا بهذه المشكلة:

بالتأكيد تظهر لي استثناءات DOM هذه. مرة أخرى، أي مساعدة ستكون محل تقدير كبير!

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

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

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

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

مرحباً، شكراً لمحاولتك المساعدة!

أنا لست مسؤولاً عن أي سياسات أمنية لأن كلا الموقعين مستضافان من قبل مزودي الاستضافة. أشك في أنهم قد يكونون سبب المشكلة. لكني سأتحقق من مزود استضافة Discourse الخاص بي.

أستخدم هذا البرنامج النصي على المدونة (إنها محرك موقع ثابت يسمى Hugo):

<script type="text/javascript">
  DiscourseEmbed = { discourseUrl: 'https://forum.fab.industries/',
                     discourseEmbedUrl: '{{ .Permalink }}' };

  (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>

لم أقم بتغيير أي من هذه الإعدادات منذ أن قمت بدمجها لأول مرة قبل بضعة أشهر.

كل ما قمت بتغييره هو بعض التنسيقات المخصصة CSS التي أضفتها في سمة المنتدى. سأقوم بإلغاء هذه التغييرات اليوم وأرى ما إذا كان ذلك سيحل المشكلة.

حسنًا. التراجع عن CSS لم يفعل شيئًا. لقد كان محاولة بعيدة على أي حال.

لقد تمكنت الآن أيضًا من التأكد من أن التضمين معطل بشكل عام. توقف الجانب الإنجليزي من المدونة عن العمل أيضًا. الصفحات الجديدة عالقة عند “جارٍ تحميل المناقشة…”

أنا الآن متأكد تمامًا من أن هذا حدث عندما قام مزودي بتحديث المنتدى الخاص بي إلى 3.0.4 ولكني لا أعرف من أي إصدار قاموا بتحديثي. لذلك ما زلت أشك في هذه الرقعة بطريقة ما:

أعتقد أن حقيقة أن المتصفح يرمي هذه الأخطاء المتعلقة بـ DOM ليس من قبيل الصدفة:

يبدو أن إيقاف تشغيل CSP في إعدادات المسؤول لا يصلح الأمر.

لذا فإن main يحتوي على هذا

TopicEmbed.import_remote(@embed_url, user: User.find_by(username_lower: username.downcase))

و stable يحتوي على هذا

TopicEmbed.import_remote(user, @embed_url)

لاحظ ترتيب المعلمات.

الآن، تم تغيير توقيع الدالة في stable لإصلاح التصحيح الأمني إلى ترتيب المعلمات الجديد، لذا

def self.import_remote(import_user, url, opts = nil)

أصبح

def self.import_remote(url, opts = nil)

والآن تستقبل معلمة url كائن User.

يؤدي تغيير استدعاء الدالة إلى حل المشكلة

diff --git a/lib/topic_retriever.rb b/lib/topic_retriever.rb
index b798df6cd7..6186ce5868 100644
--- a/lib/topic_retriever.rb
+++ b/lib/topic_retriever.rb
@@ -50,6 +50,6 @@ class TopicRetriever
     user = User.where(username_lower: username.downcase).first
     return if user.blank?

-    TopicEmbed.import_remote(user, @embed_url)
+    TopicEmbed.import_remote(@embed_url, user: user)
   end
 end

@blake

8 إعجابات

لقد قدمت طلب سحب (PR) يصلح هذه المشكلة FIX broken topic embedding because of incomplete security patch (#22088) by communiteq · Pull Request #22184 · discourse/discourse · GitHub

9 إعجابات

شكراً @RGJ على الإصلاح، تم دمج طلب السحب هذا الآن.

4 إعجابات