'Access-Control-Allow-Origin' ヘッダーが存在しません (DISCOURSE_ENABLE_CORS: true を設定しているにもかかわらず)

app.yml に以下の設定を追加しました。

  DISCOURSE_ENABLE_CORS: true
  DISCOURSE_CORS_ORIGIN: '*'

テスト中の変数を減らすため、一時的に ‘*’ に設定しています。また、URL を明示的に設定しようとしたこともありましたが、効果はありませんでした。

しかし、上記の設定を行っても、依然として以下のエラーが発生します。

Blockquote

リクエストされたリソースに ‘Access-Control-Allow-Origin’ ヘッダーが存在しません。

コンテキスト:Unity ベースの iOS クライアントが Discourse API と連携しており、テストには WebGL を使用しています。特に WebGL を実行中のブラウザでテストを行う際に、この問題に直面しています。

Postman でのテストからも、すべてのレスポンスヘッダーに ‘strict-origin-when-cross-origin’ という Referrer-Policy が含まれていることが確認できます。

ご協力をいただければ幸いです。よろしくお願いいたします!

「いいね!」 1

cors origins 設定は admin > settings > security で制御されます。

app.yml には DISCOURSE_ENABLE_CORS: だけが必要です。

「いいね!」 1

私も試して検証しました

単一サイト設定において、.yml でオリジンを設定することと、管理画面で設定することは、以下のトピックに記載されている通り、同じ効果を持ちます:What is the purpose of Settings -> Security -> CORS origins vs similar environment setting?

「いいね!」 1

ここではワイルドカードのサポートがあるかどうかわかりません。実際のドメインで試してみてください。いくつかのサイトで、ドメインが設定された CORS 設定を使用していますが、問題なく動作しているようです。

「いいね!」 1

私のサイトの1つでも設定しており、実際に機能しています。

「いいね!」 1

ドメインで試してみましたが、うまくいきませんでした。環境変数が正しく設定されているか確認する方法はありますか?(あるいは、リクエストを再送信せずにアプリの再起動で CORS が設定されたかどうかを確認する方法など、デバッグの手段を探っています)。

参考までに、CORS 設定を処理していると思われるコードの一部を共有します。

「いいね!」 1

ngnix アクセスログを確認すると、OPTIONS リクエストが 404 を返していることがわかります(これは GET リクエストのエラーに先行しています)。

「いいね!」 1