لا يمكن تمكين DiscourseID على موقع مع تعطيل force-https

لأغراض السياق، لدي موقع اختبار Discourse يعمل داخل حاوية Proxmox خلف Nginx (npmplus) على خادم مختلف في نفس الشبكة (ولكن ليس نفس النطاق الفرعي). ليس هناك شيء خاص حقًا. حاولت تمكين force-https لكنني استمريت في الحصول على عدد كبير من أخطاء التحقق من CSRF، لذا قمت بتعطيله مجددًا لأنه لم يكن يستحق القتال. بغض النظر عن كل ذلك، يعمل الموقع عبر https بشكل جيد لأن Nginx و Cloudflare مضبوطة بشكل صحيح لذلك:

حاولت تمكين DiscourseID على الموقع للتو لكنني واجهت خطأً:


هل هناك حل بديل لا يتضمن القتال مع npmplus لساعات لجعل تحقق CSRF في Discourse يتوقف عن الشكوى في أي شيء؟ هذا الموضوع ليس لمحاولة تصحيح npmplus أو SSL، أنا فقط أريد إصلاح Discourse ID.

رسالة الخطأ “Discourse ID returned” تشير إلى أن رابط إعادة التوجيه (Redirect URI) للموقع يجب أن يكون عبر https، لذا تحتاج إلى تفعيل force_https، أو الإشارة إلى ذلك عبر إعدادات الوكيل الخاص بك بأن الطلبات تصل عبر https.

باستثناء كل ما لا يعمل:

3 إعجابات

ها، أظن أنني لم ألاحظ أيًا من ذلك من قبل. كما قلت، حاولت تمكين force_https، لكنني استممت في الحصول على أخطاء CSRF عند القيام بأي شيء. ربما متغيرات nginx العادية لا تعمل ببساطة على npmplus (وفقًا للتعليمات التي تقول ذلك مباشرةً أعلاه) لأن هذا هو التكوين الذي كنت أستخدمه:

وبالإضافة إلى ذلك، لم يكن المنفذ 443 في CT الخاص بي يستجيب، لذا لا يزال الاتصال يتم محليًا عبر المنفذ 80.

يجب عليك إصلاح إعدادات الوكيل العكسي الخاص بك وتفعيل HTTPS بشكل صحيح.

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

أعتقد أن المشكلة الحالية تكمن فقط في الغرابة المتعلقة بالمتغيرات التي يكشفها npmplus. كان لدي إعدادات تعمل سابقًا، لكنني فقدتها ولا أعرف حقًا ما الذي يجب فعله في الوقت الحالي. لقد اعتمدت على ما يلي، لكنني لا أريد تمكين الإعداد حتى أتأكد بنسبة 100% من أنه سيعمل لتجنب BAD CSRF والعودة إلى وحدة تحكم Rails لإصلاحه مرة أخرى.



من المثير للاهتمام أنه يبدو أنه يرفض فقط حركة المرور فوق المنفذ 443، وهو ما لا أعتقد أنه طبيعي، حتى لو كان الوكيل مضبوطًا على المنفذ 80 في الوقت الحالي.

لا يمكن إلغاء الإشارة إلى هذا المؤشر - أعتقد أنك تتحدث عن حاوية Discourse؟

force_https لا يؤثر على ما إذا كان Discourse يخدم على المنفذ 443 (HTTPS)؛ فهو يخبر Discourse فقط بأنه يجب عليه افتراض أنه يتم الوصول إليه دائمًا عبر https.

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