Discourse アップデート後の API で発生する Access-Control-Allow-Headers CORS エラー

昨日 Discourse をアップグレードしたところ、すべての API コールバックでエラーが発生しました。問題の原因は認証ヘッダー (1) であることがわかりましたが、いくつかの呼び出しを試みると、以下のエラーが表示されます。

Access to XMLHttpRequest at 'https://mydomain.com/notifications.json?username=admin' from origin 'https://mydomain.com' has been blocked by CORS policy: Request header field api-username is not allowed by Access-Control-Allow-Headers in preflight response.

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 を呼び出すドメインを追加しましたが、api-username フィールドに関するエラーがいつ解決すべきものか分かりません。

system の API キーをクライアントサイドのコードに記述しているんですか?:scream:
これでは、誰でもあなたの JavaScript コードからそのキーを抜き取って、あなたのフォーラムを完全に乗っ取られてしまいます。

Discourse への Ajax HTTP リクエストは、既存のセッションを利用するか、そもそもセッションを必要としないようにする必要があります。

「いいね!」 3

単なるテストではなく、以下のコードでユーザー名を使用しています。

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

しかし、CORS と api-username フィールドに関連して同じエラーが発生しています。

「いいね!」 1

私が言ったことを繰り返します:

つまり、認証ヘッダーは不要です。一切不要です。

「いいね!」 1

CORS リクエストでこれらの API 認証情報を使用するのは避けるべきです。そのため、そのヘッダーフィールドは許可されていません。

ただし、CORS においては user-api ヘッダーは許可されています。

「いいね!」 3

User API keys specification を読みました。

私の場合、JavaScript のフロントエンドアプリで SSO を使用しています。すべてのユーザーに対して認証 UI を使用せずに API を呼び出すことは可能でしょうか?api-username を使用できる方法があればよいのですが、可能でしょうか?

よろしくお願いいたします

これを解決できますか?
ありがとうございます!

結局、API 統合をすべて変更する必要がなくなるよう、Discourse の以前のバージョンに戻しました。