Acess-Control-Allow-Headers CORS-Fehler mit API nach Aktualisierung von Discourse

Ich habe Discourse gestern aktualisiert und erhalte bei allen API-Rückrufen einen Fehler. Ich habe herausgefunden, dass das Problem in den Authentifizierungs-Headern liegt (1). Bei einigen Testaufrufen erhalte ich jedoch diesen Fehler:

Zugriff auf XMLHttpRequest an 'https://mydomain.com/notifications.json?username=admin' von der Herkunft 'https://mydomain.com' wurde durch die CORS-Richtlinie blockiert: Das Anforderungs-Header-Feld api-username ist in der Preflight-Antwort von Access-Control-Allow-Headers nicht erlaubt.

Ich verwende Vue und habe den api-key und api-username wie folgt zu den Headern hinzugefügt:

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

Möglicherweise müssen Sie CORS in Ihren Site-Einstellungen einrichten.

Ja, ich habe die Domain, von der aus ich die API aufrufe, in den Discourse-Einstellungen hinzugefügt, aber bei dem Fehler mit dem Feld api-username weiß ich nicht, wann ich ihn beheben muss.

Du gibst deinen system-API-Schlüssel im Client-Code an? :scream:
Das bedeutet, dass jeder ihn aus deinem JavaScript-Code entnehmen und verwenden kann, um dein Forum komplett zu übernehmen.

Alle Ajax-HTTP-Anfragen an Discourse sollten eine bestehende Sitzung nutzen oder gar keine Sitzung benötigen.

Nicht nur zum Testen, ich verwende den Benutzernamen:

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

Aber ich erhalte denselben Fehler bezüglich CORS und des Felds api-username.

Lass mich wiederholen, was ich gesagt habe:

Das bedeutet: Keine Authentifizierungsheader. Überhaupt keine.

Du solltest diese API-Anmeldedaten tatsächlich nicht für CORS-Anfragen verwenden, weshalb dieses Header-Feld nicht zulässig ist.

Wir erlauben jedoch die user-api-Header in CORS:

Ich habe die Spezifikation für Benutzer-API-Schlüssel gelesen …

In meinem Fall habe ich SSO mit einer Frontend-App in JavaScript. Könnte ich die API nutzen, ohne für jeden Benutzer die Autorisierungs-UI verwenden zu müssen? Ich würde gerne eine Möglichkeit haben, die api-username zu verwenden … ist das möglich?

Mit freundlichen Grüßen

Könntest du das lösen?
Vielen Dank!

Am Ende bin ich zur vorherigen Version von Discourse zurückgekehrt, damit ich nicht alle API-Integrationen anpassen musste.