各ユーザーに個別のキーが必要になるとは思いません……私が求めていることは、1 つの管理者キーで十分です。
Postman を通して API を消費することは問題なくできます。例えば、/notifications.json?username=alanmurphy への GET リクエストは、ヘッダーに api-key を含めるだけで問題なくデータを取得できます。
Discourse インストールのコンソールからそのリクエストをトリガーしても、問題なくデータが返ってきます。つまり:
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();
すべて問題なし:+1:
ただし、Discourse に接続しようとしているサブドメインからこれを実行すると、CORS ポリシーによってブロックされたと表示されます。リクエストヘッダーフィールド api-key は Access-Control-Allow-Headers で許可されていません。
許可されているヘッダーは以下の通りです:
Content-Type, Cache-Control, X-Requested-With, X-CSRF-Token, Discourse-Visible, User-Api-Key, User-Api-Client-Id
クロスオリジンリクエストに渡すべき認証パラメータと、それらをどこから取得できるかについてご教示いただければ大変助かります。
追伸:私の Discourse はドメインからのクロスオリジンリクエストを許可するように設定されていますので、これは完全にヘッダーの問題だと考えています。
ありがとうございます