クロスオリジンリソース共有 (CORS) とは、HTTP ヘッダーベースの標準であり、リソースの所有者がそのリソースを読み取ることを許可するオリジンを宣言し、ブラウザがクライアント側でこれを強制する仕組みです。OSS では、バケットレベルで CORS 標準をサポートしています。このグループの操作では、バケットの CORS 設定を管理します。
OSS における CORS の動作
あるオリジンで実行される JavaScript が別のオリジンの OSS を呼び出す場合(例えば、独自のドメインから配信されるページがバケットに直接オブジェクトをアップロードまたはダウンロードする場合)、CORS を設定します。バケットの CORS 設定では、ブラウザに許可するオリジンを宣言します。
オリジンの比較 — ターゲット URL のスキーム、ホスト、またはポートが、リクエスト元のページのオリジンと異なる場合、ブラウザはそのリクエストをクロスオリジンとして扱います。
リソース所有者による宣言 — 許可されたオリジンは、リクエストを送信するクライアントではなく、オブジェクトを保持するバケットの CORS 設定で宣言されます。
プリフライトリクエスト — 特定のクロスオリジンリクエストを送信する前に、ブラウザは OSS に
OPTIONSリクエストを送信して、実際のリクエストが許可されているかどうかを問い合わせます。 OSS は、バケットの CORS 設定に基づいて応答します。ブラウザによる強制 — ブラウザは、OSS が返す CORS レスポンスヘッダーとページのオリジンを比較します。オリジンが許可されていない場合、ブラウザはページがレスポンスを読み取るのをブロックします。
CORS はアクセス制御メカニズムではありません。CORS ルールは、ブラウザにレスポンスの読み取りを許可するオリジンを宣言するものです。バケット内のデータにアクセスできるユーザーを決定するものではありません。OSS のアクセス制御機能を使用してデータへのアクセスを制御してください。
操作
バケットの CORS 設定の管理
以下の操作では、バケットの CORS ルールを作成、取得、および削除します。まずルールを設定し、必要に応じて取得または削除を行います。
PutBucketCORS — バケットの CORS ルールを設定します。この操作は、グループのエントリポイントです。この操作を呼び出して、バケットへのクロスオリジンリクエストの送信を許可するオリジンを宣言します。
GetBucketCORS — バケットに設定されている CORS ルールを取得します。現在の設定を変更または削除する前に、この操作を呼び出して設定を確認します。
DeleteBucketCORS — バケットから CORS 設定を削除します。
DeleteBucketCORS はバケットの CORS ルールを削除するため、ブラウザはそのバケットへのクロスオリジンリクエストを許可するレスポンスを受け取れなくなります。まず GetBucketCORS を呼び出して返された設定を保存し、PutBucketCORS で復元できるようにしてください。
ブラウザのプリフライトリクエストの処理
OSS は、クロスオリジンリクエストの前にブラウザが送信するプリフライトリクエストに応答します。このフローの部分は、アプリケーションコードでの設定タスクではなく、ブラウザによって実行されます。
OptionObject — オブジェクトのプリフライト
OPTIONSリクエストを処理します。このリクエストはブラウザーによって自動的に送信されるため、通常、アプリケーションコードがこの操作を直接呼び出すことはありません。
ブラウザがバケットへのクロスオリジンリクエストをブロックする場合は、GetBucketCORS で現在のルールを取得し、ブラウザが送信するリクエストのオリジン、メソッド、およびヘッダーと比較してください。