オリジン間リソース共有 (CORS) の仕組み
CORS is a mechanism that allows resources such as JSON documents in an IBM® Cloudant® for IBM Cloud® database to be requested from JavaScript.
この場合の JavaScript は、別のドメインからロードされた Web サイトで実行されているものです。
通常、Web ブラウザーでは、このような「クロスドメイン」要求は禁止されています。 リクエストは 同じオリジンセキュリティポリシーを使用する。
CORS は、要求を許可すべきかどうかを判断するためにブラウザーとサーバーが対話する方法を定義するものです。 IBM Cloudant では、以下のユース・ケースで CORS が有効な解決策になる可能性があります。
-
https://www.example.com
に Web サイトがあり、この Web サイトのスクリプトでhttps://example.cloudant.com
のデータにアクセスできるようにしたい。このようなアクセスを可能にするには、許可するオリジンのリストに
https://www.example.com
を追加します。 その結果、このドメインからロードされたスクリプトは、IBM Cloudant データベースに Ajax 要求を実行することを許可されます。 CORS 要求で HTTP 許可を使用することで、 アプリケーションのユーザーが各自のデータベースにのみアクセスできるようにします。 -
自分のデータベースにアクセスすることをサード・パーティーに許可したい。
例えば、製品情報を含まれるデータベースを保有している場合、許可するオリジンのリストにサード・パーティーのドメインを追加します。 その後、そのドメインで実行される JavaScript の情報へのアクセス権限を販売パートナーに付与します。 その結果、パートナーの Web サイトで実行されるスクリプトが、IBM Cloudant データベースにアクセスできるようになります。
ブラウザー・サポート
CORS は、一般的に使用されているブラウザーのすべての現行バージョンでサポートされています。
バージョン10以前のMicrosoft™ Internet Explorerは、CORSを部分的にサポートしています。 バージョン8以前のMicrosoft™ Internet ExplorerはCORSをサポートしていません。
セキュリティー
CORS を使用してアクセスできるデータベースに機密データを保管することには、潜在的なセキュリティー・リスクがあります。 許可するオリジンのリストにドメインを登録すると、そのドメインのすべての JavaScript を信頼することになります。 そのドメインで実行される Web アプリケーションが、悪意のあるコードを実行したり、セキュリティーの脆弱性を有していたりすると、データベース内の機密データが漏洩するおそれがあります。
また、HTTPS ではなく HTTP でスクリプトをロードすることを許可したうえに、CORS を使用してデータにアクセスすることは、 中間者攻撃でスクリプトを変更されるリスクを生み出します。
中間者攻撃のリスクを軽減するために、以下の指針に従ってください。
- すべてのオリジンの CORS 要求を許可することは避けてください。 つまり、
"origins": ["*"]
は設定しないでください。ただし、以下の条件を確実に満たさなければならない場合は別です。- データベース内のすべてのデータをあらゆる人に公開する必要がある。
- データを変更する許可を付与するユーザー資格情報がブラウザーで使用されることは決してない。
- (HTTP ではなく) HTTPS のオリジンからの CORS 要求のみを許可してください。
- 許可するオリジンのドメインで実行される Web アプリケーションが信頼できるものであり、セキュリティーの脆弱性を有していないことを確認してください。
詳細については、CORSの構成エンドポイントに関する APIおよびSDKのドキュメントを参照してください。
ダッシュボード
IBM Cloudant ダッシュボードで CORS サポートを利用できます。
ダッシュボード内のCORSタブを使用して、CORS設定を更新できます。 次のスクリーンショットをご覧ください:

現在の CORS 構成を表示するには、ダッシュボードで**「Account」** > **「CORS」**を開きます。
Enable CORS
を使用して、CORS を有効または無効にすることができます。 この設定は enable_cors
オプションに対応する。 アプリケーション内から CORS 構成を変更する場合。
すべてのドメインで CORS を有効にすることを指定するには、
All domains (*)
オプションを選択します。
特定のオリジンのドメインでのみ CORS を有効にすることを指定するには、
Restrict to specific domains
オプションを使用してドメインまたはサブドメインをそれぞれリストします。 ドメインごとに (可能であれば、セキュリティーの向上のために https
接頭部を使用して) 完全な URL を指定してください。