الحالة:
أقوم بتطوير إضافة (plugin) وأستخدم nginx كعكسي وكيل (reverse proxy) إلى rails:3000، ويعمل كل شيء بشكل رائع، لكنني أواجه صعوبة في الوصول إلى واجهة برمجة التطبيقات (API) بسبب أخطاء CORS المزعجة التي نعرفها جميعًا ونحبها.
تم منع الوصول إلى XMLHttpRequest إلى 'blah blah blah' من المصدر 'foo bar bing' بسبب سياسة CORS: لا يوجد رأس 'Access-Control-Allow-Origin' في المورد المطلوب.
حتى الآن، حاولت إضافة رؤوس (headers) إلى nginx، لكن لسبب ما، لا تظهر هذه الرؤوس في الرؤوس عند التصحيح في Chrome.
كما جربت استخدام nginx لتعديل proxy_headers من rails إلى nginx، لكن دون جدوى.
أيضًا، جربت استخدام إضافة ملحق Chrome لإدراج الرؤوس، لكن يبدو أنها لا تعمل أيضًا، على الرغم من أن اختبار CORS للمتصفح باستخدام موقع اختبار CORS يظهر أن كل شيء مسموح به.
ثم جربت إضافة gem الخاص بـ rack-cors, لكن لم أستطع جعل config.middleware يعمل بسبب أخطاء freeze.
هذا الأمر يعيق التطوير ويبدو أنني وصلت إلى طريق مسدود ![]()
هل هناك طريقة لإضافة هذه الرؤوس مباشرة في Discourse في ملف إعدادات (أو الأفضل في الإضافة) والتي ستُرسل رؤوس HTTP المختلفة التي نرغب في اختبارها وإرسالها في بيئة التطوير؟
أو، هل من الممكن جعل gem الخاص بـ rack-cors يعمل؟ إذا كان الأمر كذلك، فأين في الإضافة يجب أن أضيف الكود؟
المرجع: RubyDoc.info: File: README – Documentation for rack-cors (0.4.0) – RubyDoc.info
كما ذكرت، فإن الأشياء (الكثيرة) التي جربتها حتى الآن وما ورد أعلاه في rubydocs تؤدي جميعها إلى “لم يحدث هنا”، نفس الشيء القديم.
حتى جربت نسيان CORS مؤقتًا، وإضافة رأس تخزين HTTP واحد فقط، لكن هذا أيضًا كان طريقًا مسدودًا من جهتي.
أعتقد أن الجميع يضحك على هذه المشاكل المتعلقة بـ CORS، وأنا أيضًا؛ ولكن إذا كان بإمكانك مشاركة كيفية إضافة رؤوس اختبار خاصة بي (سواء كانت CORS أم لا) أثناء وجودي في بيئة الاختبار التطويرية، فسأكون ممتنًا جدًا.
شكرًا لك.
