CORS

ポリシー名

クロスオリジンリソース共有 (CORS)

概要

外部ドメインに存在するリソースへのアクセスを可能にする

カテゴリ

コンプライアンス

使用可能な Mule 最小バージョン

v4.1.1

CORS は、Web アプリケーションが別のドメインで定義されたリソースにアクセスできるメカニズムです。 CORS を使用すると、Web ページから JavaScript XMLHttpRequest (XHR) コールを呼び出すアプリケーションが発生元以外のドメインからのリソースとやりとりできます。

通常、Web ブラウザはこの標準を実装してクロスオリジン要求を許可します。このポリシーを適用すると、API はデフォルトで公開リソースとして分類されます。API の特定のリソースのみを共有する場合は、ポリシーを制限付きリソースとして設定できます。

CORS ポリシーは​「CORS W3C Recommendation (CORS W3C 勧告)」​の標準に準拠します。

デフォルトグループを指定しないと別のグループを指定できません。デフォルトグループは、CORS 用に設定する必要がある最初のグループです。設定エラーが発生した場合、ポリシーはデフォルト設定にリセットされます。

設計上、CORS ポリシーの実行順序を変更することはできません。CORS ポリシーが適用されているアプリケーションに OPTIONS を使用している保護された要求が送信された場合、要求は保護されたリソースに到達しません。​CORS 仕様 に従い、すべての OPTIONS 要求はプリフライトとみなされます。

cors policy

非 API ゲートウェイ Mule 環境の CORS の設定

Mule Runtime Engine (Mule) が API ゲートウェイ機能で有効になっておらず、CORS 機能を実装する必要がある場合、CORS インターセプタを使用できます。CORS インターセプタは、Mule 4.0 で使用可能になった HTTP リスナ設定の要素です。

CORS 設定は、CORS ポリシー機能を公開リソースとして利用するか、選択したオリジングループ用として利用するかによって異なります。

次の例は、選択したオリジングループ構造の設定可能な要素を示しています。

<http:listener-interceptors>
   <http:cors-interceptor allowCredentials="optional boolean value (true/false)">
       <http:origins> (collection of origins)
           <http:origin url="http://origin.com" accessControlMaxAge="integer value">
               <http:allowed-methods>
                   <http:method methodName="method 1"/>
	    ...
                   <http:method methodName="method n"/>
               </http:allowed-methods>
               <http:allowed-headers>
                   <http:header headerName="header 1"/>
 	    ...
                   <http:header headerName="header n"/>
               </http:allowed-headers>
               <http:expose-headers>
                   <http:header headerName="header 1"/>
	    ...
                   <http:header headerName="header n"/>
               </http:expose-headers>
           </http:origin>
       </http:origins>
   </http:cors-interceptor>
</http:listener-interceptors>

次の例は、公開リソース構造の設定可能な要素を示しています。

<http:listener-interceptors>
   <http:cors-interceptor allowCredentials="optional boolean value (true/false)">
       <http:origins>
           <http:public-resource/>
       </http:origins>
   </http:cors-interceptor>
</http:listener-interceptors>

ブラウザでの同一オリジン制限の無効化

API の CORS を実装できない場合、アクセスできない API をコールするには、ブラウザで同一オリジン制限を無効にする必要があります。このアクションを実行するようにブラウザを変更する方法は、使用しているブラウザによって異なります。

ただし、ブラウザの設定を変更する前に、潜在的なセキュリティの影響を考慮し、外部の脅威を回避するために独自の Web ページへの変更を制限してください。ベストプラクティスとして、これらのブラウザ設定は独自の Web ページでのテストにのみ使用する必要があります。

Google Chrome (Mac OS X) で同一オリジン制限を無効にする

Google Chrome (Mac OS X) で同一オリジン制限を無効にする方法は、次のとおりです。

  1. 新しいターミナルウィンドウを開き、次のコマンドを実行します。

    open -a Google\ Chrome --args --disable-web-security​。

  2. Enter​ キーを押します。

Google Chrome (Windows) で同一オリジン制限を無効にする

Google Chrome (Windows) で同一オリジン制限を無効にする方法は、次のとおりです。

  1. コマンドプロンプトウィンドウを開きます。

  2. Chrome 実行可能ファイル (Chrome.exe) の場所に移動します。

  3. 次のコマンドを実行します。

    chrome.exe --disable-web-security​。

  4. Enter​ キーを押します。

Internet Explorer で同一オリジン制限を無効にする

Internet Explorer で同一オリジン制限を無効にする手順は、次のとおりです。

  1. [インターネットのプロパティ]​ > [セキュリティ]​ > [このゾーンのセキュリティのレベル] の [レベルのカスタマイズ]​ > [その他]​ に移動します。

  2. ドメイン間でデータソースにアクセスするための [ドメイン間でのデータソースのアクセス]​ オプションを有効にします。

ポリシーのパラメータの設定

UI からポリシーを API に適用するときに、以下のパラメータが表示されます。

要素 説明 必須かどうか

Public resource (公開リソース)

CORS 設定を公開リソースとして適用するかどうか (デフォルト)。

はい

Default group (デフォルトグループ)

CORS 設定を特定のリソースにのみ適用するかどうか ([Public resource (公開リソース)]​ を選択解除する必要があります)。

いいえ

Support credentials (ログイン情報のサポート)

ポリシーが Cookie、認証ヘッダー、TLS クライアント証明書などのログイン情報をサポートするかどうか。

いいえ

Was this article helpful?

💙 Thanks for your feedback!