CORS

クロスオリジンリソース共有 (CORS) は、Web アプリケーションが別のドメインで定義されたリソースにアクセスできるメカニズムです。たとえば、ブラウザはこの標準を使用してクロスオリジン要求を許可します。

CORS ポリシーは、「Cross-Origin Resource Sharing W3C Recommendation 16 January 2014 (クロスオリジンリソース共有 W3C 勧告 16 (2014 年 1 月))」に準拠します。このポリシーは、API Manager から適用できます。デフォルトのポリシー設定では、API は公開リソースとみなされます。適用しない場合、[Public Resource (公開リソース)] チェックボックスをオフにして、拡張 CORS 設定を入力します。

cors policy
デフォルトグループを指定しないと別のグループを指定できません。デフォルトグループは、デフォルトの通常の意味の代替ではありません。この場合、CORS で設定する最初のグループという意味でしかありません。

重要:​ CORS ポリシーを並び替えることはできません。これは、技術的な制限ではなく設計です。CORS が設定されている場合、オプション要求は CORS 準拠の RFC に従ってプレフライトとして処理されるため、バックエンドに到達しません。

インターセプタとしての CORS

Mule Runtime 4.0 では、CORS インターセプタは HTTP リスナ設定の要素です。一貫性を保つために、その設定はポリシーと同じになっています。Mule Runtime が API ゲートウェイ機能で開始されておらず、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 ページでテストする場合にのみを使用してください。

Google Chrome (Mac OS X)

  • 新しいターミナルウィンドウを開き、​open -a Google\ Chrome --args --disable-web-security​ の行を貼り付けて ​Enter​ キーを押します。

Google Chrome (Windows)

  • 新しいコマンドプロンプトウィンドウを開き、Chrome 実行可能ファイル (Chrome.exe) の場所に移動し、​chrome.exe --disable-web-security​ の行を貼り付けて ​Enter​ キーを押します。

Internet Explorer

ドメイン間でデータソースにアクセスするオプションを有効にします。IE の一部のバージョンでは、このオプションは [インターネットのプロパティ] > [セキュリティ] タブ > [このゾーンのセキュリティのレベル] の [レベルのカスタマイズ] > [その他] > [ドメイン間でのデータ ソースのアクセス] にあります。

Was this article helpful?

💙 Thanks for your feedback!