デフォルトでは、バケットに対して CORS は設定されません。既存のバケットの CORS を設定または変更するには、そのバケットを範囲とする PUT リクエストを作成し、cors
クエリ文字列パラメータを使用します。適用する CORS を 1 つ以上指定した XML ドキュメントをリクエスト本文に組み込む必要があります。作成対象の新規バケットに CORS を設定することはできません。
既存のバケットに CORS 設定を適用するには FULL_CONTROL
権限が必要です。また、PUT Bucket メソッドを使用するための認証も必要です。
バケットに CORS 構成を設定する方法については、クロスオリジン リソース シェアリング(CORS)の構成をご覧ください。
クエリ文字列パラメータ
パラメータ | 説明 | 必須 |
---|---|---|
cors |
既存のバケットの CORS 設定を変更する場合に使用します。リクエストの本文に CORS の XML ドキュメントを指定する必要があります。 | × |
署名付き URL を作成して使用するときに指定するパラメータについては、署名付き URL クエリ文字列パラメータをご覧ください。
リクエスト ヘッダー
一般的なリクエスト ヘッダーをご覧ください。
リクエストの本文の要素
CORS 設定における XML 要素の入れ子を次の図に示します。詳しくは、図の下の表をご覧ください。
次のリクエストの本文の要素は、cors
クエリ文字列パラメータを使用して既存のバケットに CORS を指定する場合にのみ適用することができます。
要素 | 説明 |
---|---|
CorsConfig |
1 つ以上の Cors 設定コンテナ用のコンテナ。Cors 設定を複数指定した場合、Cors 設定は CorsConfig コンテナでのリスト順に評価されます。リクエストの Origin と Method に一致する最初の Cors 設定に従って、レスポンスに追加する CORS レスポンス ヘッダーが決まります。 |
Cors |
バケットに適用される CORS 設定のコンテナ。各 Cors コンテナには複数の Origin と複数の Method を指定できます。リクエストの Origin が Cors コンテナのいずれかの Origin と一致し、リクエストの Method が Cors コンテナのいずれかの Method と一致すれば、一致していると見なされます。 |
Origins |
この Cloud Storage バケットとのクロスオリジン リソース シェアリング(CORS)が許可されている生成元のコンテナ。 |
Origin |
この Cloud Storage バケットとのクロスオリジン リソース シェアリングを許可されたオリジン例: https://origin1.example.com 指定する値がワイルドカードのみの場合(<Origin>*</Origin> )、すべての生成元へのアクセス権が付与されます。 |
Methods |
1 つ以上の HTTP メソッド要素のコンテナ。この Cloud Storage バケットとのクロスオリジン リソース シェアリングで認められているメソッドを指定します。 |
Method |
この構成で使用される HTTP メソッド。有効な値は DELETE 、GET 、HEAD 、POST 、PUT です。 OPTIONS はプリフライト リクエストとして解釈されるため、CORS 構成でこのメソッドを指定する必要はありません。 |
ResponseHeaders |
1 つ以上の ResponseHeader 要素のコンテナ(オプション)。 |
ResponseHeader |
ユーザー エージェントが複数の生成元の間で共有できるレスポンス ヘッダーを指定します。 |
MaxAgeSec |
この値はプリフライト リクエストへのレスポンスに使用されます。クライアント(ブラウザ)は、プリフライト リクエストを繰り返す前に、クライアント(ブラウザ)がリクエストを行うことができる秒数を指定します。(キャッシュの有効期限を示します)。 プリフライト リクエストは、リクエスト メソッドに非シンプル ヘッダーが含まれている場合、またはリクエスト メソッドが POST、GET、HEAD ではない場合に必要です。プリフライト リクエストに応じて Access-Control-Max-Age ヘッダーに値が返されます。 |
リクエストの構文
PUT /?cors HTTP/1.1 Host: BUCKET_NAME.storage.googleapis.com Date: DATE_AND_TIME_OF_REQUEST Content-Length: REQUEST_BODY_LENGTH Content-Type: MIME_TYPE_OF_THE_BODY Authorization: AUTHENTICATION_STRING XML_DOCUMENT_DEFINING_CORS
レスポンス ヘッダー
使用するリクエスト ヘッダーに応じて、リクエストから返されるレスポンス ヘッダーは異なります。
レスポンスの本文の要素
このレスポンスの本文に XML ドキュメントは含まれません。
例
次の例では、acme-pets という名前のバケットに CORS を設定します。この CORS 設定により、2 つの生成元とそれらの生成元で許可される HTTP メソッドが設定されます。この例では、使用可能なすべての HTTP メソッドが許可されます。
リクエスト
PUT /?cors HTTP/1.1 Host: acme-pets.storage.googleapis.com Date: Thu, 12 Mar 2012 03:38:42 GMT Content-Length: 1320 Authorization: Bearer ya29.AHES6ZRVmB7fkLtd1XTmq6mo0S1wqZZi3-Lh_s-6Uw7p8vtgSwg <?xml version="1.0" encoding="UTF-8"?> <CorsConfig> <Cors> <Origins> <Origin>http://origin1.example.com</Origin> <Origin>http://origin2.example.com</Origin> </Origins> <Methods> <Method>GET</Method> <Method>HEAD</Method> <Method>PUT</Method> <Method>POST</Method> <Method>DELETE</Method> </Methods> <ResponseHeaders> <ResponseHeader>x-goog-meta-foo1</ResponseHeader> <ResponseHeader>x-goog-meta-foo2</ResponseHeader> </ResponseHeaders> <MaxAgeSec>1800</MaxAgeSec> </Cors> </CorsConfig>
レスポンス
HTTP/1.1 200 OK Date: Thu, 12 Mar 2012 03:38:42 GMT Expires: Mon, 01 Jan 1990 00:00:00 GMT Cache-Control: no-cache, no-store, must-revalidate Content-Length: 0 Content-Type: text/html