Cross-Origin Resource Sharing (CORS) 設定


Red Hat build of Quarkus 3.20

Red Hat Customer Content Services

概要

このガイドでは、Red Hat build of Quarkus アプリケーションでサーバー定義のポリシーを使用して、Cross-Origin Resource Sharing (CORS) を使用してクロスオリジン HTTP リクエストを安全に管理する方法を説明します。安全なポリシーの適用、動的なオリジン管理、およびクロスオリジン HTTP リクエストを制御するための詳細なヘッダーのカスタマイズを強調しています。さらに、CORS フィルターの設定、許可されたオリジンに対する正規表現の使用、開発と実稼働環境の両方でセキュリティーのベストプラクティスが遵守されるようにするための手順ごとのガイダンスも提供します。

Red Hat build of Quarkus ドキュメントへのフィードバックの提供

エラーを報告したり、ドキュメントを改善したりするには、Red Hat Jira アカウントにログインし、課題を送信してください。Red Hat Jira アカウントをお持ちでない場合は、アカウントを作成するように求められます。

手順

  1. 次のリンクをクリックして チケットを作成します
  2. Summary に課題の簡単な説明を入力します。
  3. Description に課題や機能拡張の詳細な説明を入力します。問題があるドキュメントのセクションへの URL も記載してください。
  4. Submit をクリックすると、課題が作成され、適切なドキュメントチームに転送されます。

第1章 Cross-Origin Resource Sharing (CORS)

Quarkus で CORS を有効にして設定し、許可されるオリジン、メソッド、ヘッダーを指定して、ブラウザーがクロスオリジンリクエストを安全に処理できるようにします。

クロスオリジンリソース共有 (CORS) は、HTTP ヘッダーを使用して、外部オリジンからのリソースに対するブラウザーのリクエストを安全に管理します。許可されたオリジン、メソッド、ヘッダーを指定することにより、Quarkus サーバーは CORS フィルターを使用して、制御されたアクセスを維持しながらブラウザーがドメイン間でリソースを要求できるようにすることができます。このメカニズムにより、セキュリティーが強化され、正当なクロスオリジンリクエストがサポートされます。オリジン定義の詳細は、Web オリジンコンセプトを 参照してください。

1.1. CORS フィルターを有効にする

アプリケーションで CORS ポリシーを適用するには、src/main/resources/application.properties ファイルに次の行を追加して、Quarkus CORS フィルターを有効にします。

Copy to Clipboard Toggle word wrap
quarkus.http.cors.enabled=true

フィルターは、すべての受信 HTTP リクエストをインターセプトしてクロスオリジンリクエストを識別し、設定されたポリシーを適用します。次に、フィルターは HTTP 応答に CORS ヘッダーを追加し、許可されたオリジンとアクセスパラメーターをブラウザーに通知します。プリフライトリクエストの場合、フィルターは HTTP 応答を直ちに返します。通常の CORS リクエストの場合、リクエストが設定されたポリシーに違反すると、フィルターは HTTP 403 ステータスでアクセスを拒否します。それ以外の場合、ポリシーで許可されていれば、フィルターはリクエストを宛先に転送します。

詳細な設定オプションについては、次の設定プロパティーセクションを参照してください。

lock ビルド時に固定された設定プロパティー: その他の設定プロパティーはすべて実行時にオーバーライドできます。

設定プロパティー

デフォルト

quarkus.http.cors.origins

CORS に許可されたオリジン。

有効な URL のコンマ区切りリスト (例 : http://www.quarkus.io,http://localhost:3000)。スラッシュで囲まれた URL は正規表現として解釈されます。

環境変数: QUARKUS_HTTP_CORS_ORIGINS

list of string

 

quarkus.http.cors.methods

CORS リクエストに許可される HTTP メソッド。

GET、PUT、POST などの有効な HTTP メソッドのコンマ区切りリスト。設定されていない場合、フィルターはデフォルトですべての HTTP メソッドを許可します。

デフォルト: 任意の HTTP リクエストメソッドが許可されます。

環境変数: QUARKUS_HTTP_CORS_METHODS

list of string

 

quarkus.http.cors.headers

CORS リクエストに許可される HTTP ヘッダー。

有効なヘッダーのコンマ区切りリスト (例: X-Custom,Content-Disposition)。設定されていない場合、フィルターはデフォルトですべてのヘッダーを許可します。

デフォルト: 任意の HTTP リクエストヘッダーが許可されます。

環境変数: QUARKUS_HTTP_CORS_HEADERS

list of string

 

quarkus.http.cors.exposed-headers

CORS 応答で公開される HTTP ヘッダー。

公開するヘッダーのコンマ区切りリスト (例: X-Custom,Content-Disposition)

デフォルト: ヘッダーは公開されません。

環境変数: QUARKUS_HTTP_CORS_EXPOSED_HEADERS

list of string

 

quarkus.http.cors.access-control-max-age

java.time.Duration 形式の Access-Control-Max-Age 応答ヘッダー値。

プリフライトリクエストの結果をキャッシュできる期間をブラウザーに通知します。

環境変数: QUARKUS_HTTP_CORS_ACCESS_CONTROL_MAX_AGE

Duration

 

quarkus.http.cors.access-control-allow-credentials

Access-Control-Allow-Credentials 応答ヘッダー。

リクエストの認証情報モード Request.credentialsinclude に設定されている場合に、フロントエンド JavaScript が認証情報にアクセスすることを許可できるかどうかをブラウザーに通知します。

デフォルト: quarkus.http.cors.origins プロパティーが設定されており、正確な Origin ヘッダー値と一致する場合は true

環境変数: QUARKUS_HTTP_CORS_ACCESS_CONTROL_ALLOW_CREDENTIALS

boolean

 
duration のフォーマット

duration の値を書き込むには、標準の java.time.Duration フォーマットを使用します。詳細は、Duration#parse() Java API ドキュメント を参照してください。

数字で始まる簡略化されたフォーマットも使用できます。

  • 値が数値のみの場合は、秒単位の時間を表します。
  • 数字の後に ms が続く値は、ミリ秒単位の時間を表します。

その他の場合は、解析のために簡略化されたフォーマットが java.time.Duration フォーマットに変換されます。

  • 数字の後に hm、または s が続く値には、接頭辞 PT が付きます。
  • 数字の後に d が続く値は、接頭辞 P が付きます。

1.2. CORS 設定の例

次の例は、オリジンの 1 つを定義する正規表現を含む完全な CORS フィルター設定を示しています。

Copy to Clipboard Toggle word wrap
quarkus.http.cors.enabled=true 
1

quarkus.http.cors.origins=http://example.com,http://www.example.io,/https://([a-z0-9\\-_]+)\\\\.app\\\\.mydomain\\\\.com/ 
2

quarkus.http.cors.methods=GET,PUT,POST 
3

quarkus.http.cors.headers=X-Custom 
4

quarkus.http.cors.exposed-headers=Content-Disposition 
5

quarkus.http.cors.access-control-max-age=24H 
6

quarkus.http.cors.access-control-allow-credentials=true 
7
1
CORS フィルターを有効にします。
2
正規表現を含む、許可されるオリジンを指定します。
3
クロスオリジンリクエストに許可される HTTP メソッドをリスト表示します。
4
クライアントがリクエストに含めることができるカスタムヘッダーを宣言します。
5
クライアントがアクセスできる応答ヘッダーを識別します。
6
プリフライトリクエストの結果をキャッシュする期間を設定します。
7
クロスオリジンリクエストで Cookie または認証情報を許可します。

application.properties ファイルで正規表現を使用する場合は、適切な動作を確保するために、特殊文字を 4 つのバックスラッシュ (\\\\) でエスケープします。以下に例を示します。

  • \\\\. はリテラルの . 文字に一致します。
  • \\. は、 正規表現メタデータ文字として任意の 1 文字に一致します。
重要

パターンを誤ってエスケープすると、意図しない動作やセキュリティー上の脆弱性が生じる可能性があります。デプロイメント前に必ず正規表現の構文を確認してください。

1.3. 開発モードですべてのオリジンを許可する

開発中にオリジンを設定するのは難しい場合があります。開発を簡素化するには、開発モードでのみすべてのオリジンを許可することを検討してください。

Copy to Clipboard Toggle word wrap
quarkus.http.cors.enabled=true
%dev.quarkus.http.cors.origins=/.*/
警告

開発プロファイル (%dev) 内のすべてのオリジンのみを許可します。実稼働環境で無制限のオリジンを許可すると、不正なデータアクセスやリソースの不正使用など、重大なセキュリティーリスクが生じます。実稼働環境では、quarkus.http.cors.origins プロパティーで明示的なオリジンを定義します。

1.4. 参考資料

法律上の通知

Copyright © 2025 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat, Inc.