خطأ CORS مع Access-Control-Allow-Headers في API بعد تحديث discourse

ترقيةي لـ Discourse كانت بالأمس، وحصلت على جميع استدعاءات واجهة برمجة التطبيقات (API) مع خطأ. لقد وجدت أن المشكلة تكمن في رؤوس المصادقة (1)، لكنني جربت بعض الاستدعاءات وحصلت على هذا الخطأ:

تم حظر الوصول إلى XMLHttpRequest في 'https://mydomain.com/notifications.json?username=admin' من المصدر 'https://mydomain.com' بسبب سياسة CORS: حقل رأس الطلب api-username غير مسموح به بواسطة Access-Control-Allow-Headers في استجابة التمهيد.

أستخدم Vue وقد أضفت api-key و api-username إلى الرؤوس على النحو التالي:

Vue.http
        .get(
             "https://discourse.mydomain.com/notifications.json?username="+input.username,
          {
            headers: {
             "Api-Key":"xxxxxxxxxxxxxxxxx",
             "Api-Username": "system",
              "content-type": "application/json",
              accept: "application/json"
            }
          }
        )

(1) Discourse REST API Documentation

قد تحتاج إلى إعداد CORS في إعدادات موقعك؟

نعم، لقد أضفت النطاق الذي أستخدمه لاستدعاء واجهة برمجة التطبيقات في إعدادات discourse، لكنني لا أعرف متى يجب حل خطأ حقل api-username.

هل تضع مفتاح API الخاص بـ system في كود جانب العميل؟ :scream:
هذا يعني أن أي شخص يمكنه التقاطه من كود JavaScript الخاص بك واستخدامه للسيطرة الكاملة على منتداك.

يجب أن تستفيد أي طلبات HTTP Ajax موجهة إلى Discourse من جلسة موجودة مسبقًا، أو ألا تحتاج إلى جلسة على الإطلاق.

ليس مجرد اختبار، أنا أستخدم اسم المستخدم

      Vue.http
    .get(
      "https://discourse.mydomain.com/notifications.json?username="+input.username,
      {
        headers: {
       "Api-Key":"xxxxxxxxxxxxxxxxxxxxxx",
        "Api-Username": input.username    
        }
      }
    )

لكنني أحصل على نفس الخطأ المتعلق بـ CORS وحقل api-username.

دعني أكرر ما قلته:

هذا يعني: لا توجد رؤوس مصادقة. على الإطلاق.

يجب ألا تستخدم بيانات اعتماد هذه الـ API لطلبات CORS، وهذا هو السبب في عدم السماح بحقل الرأس هذا.

ومع ذلك، فإننا نسمح برؤوس user-api في CORS:

لقد قرأت مواصفات مفاتيح واجهة برمجة التطبيقات للمستخدمين

في حالتي، لدي مصادقة موحدة (SSO) مع تطبيق واجهة أمامية بلغة JavaScript، هل يمكنني استخدام واجهة برمجة التطبيقات دون استخدام واجهة المستخدم للمصادقة لكل مستخدم؟ أود وجود طريقة يمكنني من خلالها استخدام اسم المستخدم الخاص بواجهة برمجة التطبيقات (api-username)… هل هذا ممكن؟

تحياتي

هل يمكنك حل هذا؟
شكرًا لك!

في النهاية، عدت إلى الإصدار السابق من Discourse حتى لا أحتاج إلى تغيير جميع تكاملات واجهة برمجة التطبيقات