Ich glaube nicht, dass jeder Benutzer einen eigenen Schlüssel benötigt. Ein einziger Admin-Schlüssel sollte ausreichen.
Ich kann die API problemlos über Postman nutzen. Beispielsweise liefert ein GET-Request auf /notifications.json?username=alanmurphy die Daten ohne Probleme zurück, wobei lediglich api-key als Header verwendet wird.
Wenn ich diese Anfrage von der Konsole einer Discourse-Installation aus löse, bekomme ich ebenfalls problemlos Daten zurück, also:
var xhr = new XMLHttpRequest();
xhr.addEventListener(“readystatechange”, function () {
if (this.readyState === 4) {
console.log(this.responseText);
}
});
xhr.open(“GET”, “https://**********.com/notifications.json?username=alanmurphy”);
xhr.setRequestHeader(“api-key”, “d06ca53322d1fbaf383a6394d6c229e56871342d2cad953a0fe26c19df7645ba”);
xhr.setRequestHeader(“api-userame”, “system”);
xhr.send();
Alles in Ordnung:+1:
Wenn ich dies jedoch von der Subdomain aus mache, von der ich Discourse ansprechen möchte, wird mir mitgeteilt, dass die Anfrage aufgrund der CORS-Richtlinie blockiert wurde: Das Anfragungsheader-Feld api-key ist nicht durch Access-Control-Allow-Headers erlaubt.
Die erlaubten Header sind:
Content-Type, Cache-Control, X-Requested-With, X-CSRF-Token, Discourse-Visible, User-Api-Key, User-Api-Client-Id
Wenn ich nur eine Anleitung dazu bekommen könnte, welche Auth-Parameter für Cross-Origin-Anfragen zu übergeben sind und woher ich diese beziehen kann, wäre das sehr hilfreich.
PS: Meine Discourse-Instanz ist so konfiguriert, dass Cross-Origin-Anfragen von der Domain erlaubt sind. Daher glaube ich, dass es sich rein um ein Header-Problem handelt.
Danke