Object Storage Service (OSS) バケットのクロスオリジンリソース共有 (CORS) ルールを設定します。
使用上の注意
デフォルトで無効なデザイン
デフォルトでは、バケットのCORSは無効になっています。 すべてのクロスオリジンリクエストは許可されていません。
上書きメカニズム
PutBucketCors操作を呼び出して、既存のCORSルールが同じバケットに新しいCORSルールを設定すると、既存のルールが上書きされます。
アプリケーションでのCORSの使用
アプリケーションでCORSを使用する前に、PutBucketCors操作を呼び出してCORSルールを設定し、CORSを有効にする必要があります。
たとえば、ブラウザの
XMLHttpRequest
を使用してOSSにアクセスしexample.com
場合は、この操作を呼び出してXMLでCORSルールを設定する必要があります。CORSルールマッチング
OSSがバケットを宛先とするクロスオリジンリクエストまたはOPTIONSリクエストを受信すると、OSSはバケットに設定されているCORSルールを読み取り、ルールを次々と照合しようとします。 最初の一致が見つかった場合、OSSは対応するヘッダーを返します。 リクエストがいずれかのCORSルールと一致しない場合、OSSはレスポンスにCORSヘッダーを含めません。
OSSは、リクエストが次の条件を満たす場合にのみ、クロスオリジンリクエストまたはOPTIONSリクエストがCORSルールに一致すると見なします。
クロスオリジンリクエストの送信元のオリジンは、CORSルールの1つの
AllowedOrigin
要素の値と一致します。要求メソッド (GETまたはPUTなど) またはOPTIONS要求の
Access-Control-request-method
ヘッダーに対応するメソッドは、1つのAllowedMethod
項目と一致する必要があります。OPTIONSリクエストの
Access-Control-Request-Headers
に含まれる各ヘッダーは、CORSルールの1つのAllowedHeader
要素の値と一致する必要があります。
リクエスト構文
PUT /?cors HTTP/1.1
日付: GMT日付
Content-Length: ContentLength
Content-Type: application/xml
ホスト: BucketName.oss-cn-hangzhou.aliyuncs.com
権限付与: SignatureValue
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration>
<CORSRule>
<AllowedOrigin> CORSリクエストを許可するオリジン </AllowedOrigin>
<AllowedOrigin>…</AllowedOrigin>
<AllowedMethod>HTTPメソッド </AllowedMethod>
<AllowedMethod>…</AllowedMethod>
<AllowedHeader> ブラウザが送信できるヘッダー </AllowedHeader>
<AllowedHeader>…</AllowedHeader>
<ExposeHeader> クライアントアプリからアクセスできるレスポンスのヘッダー </ExposeHeader>
<ExposeHeader>…</ExposeHeader>
<MaxAgeSeconds> 対戦前の応答をキャッシュする時間 </MaxAgeSeconds>
</CORSRule>
<CORSRule>
...
</CORSRule>
...
</CORSConfiguration >
リクエスト要素
要素 | データ型 | 必須 | 例 | 説明 |
CORSRule | Container | 必須 | N/A | CORSルールを格納するコンテナー。 バケットには最大 10 個の CORS ルールを設定できます。 リクエストのXMLメッセージ本文のサイズは最大16 KBです。 親ノード: CORSConfiguration |
AllowedOrigin | String | 必須 | * | クロスオリジンリクエストが許可されるオリジン。 複数の要素を使用して、複数の許可されたオリジンを指定できます。 AllowedOriginのワイルドカードとして使用できるアスタリスク (*) は1つだけです。 AllowedOriginをアスタリスク (*) に設定すると、すべてのクロスオリジンリクエストが許可されます。 親ノード: CORSRule |
AllowedMethod | 列挙 | 必須 | GET | 許可されているクロスオリジンのリクエストメソッド。 有効な値: GET、PUT、DELETE、POST、およびHEAD。 親ノード: CORSRule |
AllowedHeader | String | 任意 | 承認 | OPTIONSプリフライト要求の
重要 AllowedHeaderのワイルドカードとして使用できるアスタリスク (*) は1つだけです。 次の文字はサポートされていません。
親ノード: CORSRule |
ExposeHeader | String | 任意 | x-oss-test | JavaScriptのXMLHttpRequestオブジェクトなど、アプリケーションからの許可されたアクセス要求のレスポンスヘッダー。 重要 次の文字はサポートされていません。
親ノード: CORSRule |
MaxAgeSeconds | Integer | 任意 | 100 | 指定されたリソースに対するOPTIONSプリフライト要求に対する応答をブラウザがキャッシュできる期間。 単位は秒です。 CORSルールで指定できるMaxAgeSeconds要素は1つだけです。 親ノード: CORSRule |
CORSConfiguration | Container | 必須 | N/A | バケットのCORS設定を格納するコンテナー。 親ノード: なし |
ResponseVary | ブール値 | 任意 | false | Vary: Originヘッダーを返すかどうかを指定します。 有効な値:
重要 この要素は、少なくとも1つのCORSルールが設定されている場合にのみ有効です。 |
操作の一般的なリクエストヘッダーの詳細については、「一般的なHTTPヘッダー」をご参照ください。
レスポンスヘッダー
PutBucketCors要求に対する応答には、共通の応答ヘッダーのみが含まれます。 詳細については、「共通HTTPヘッダー」をご参照ください。
例
リクエストの例
PUT /?cors HTTP/1.1 ホスト: oss-example.oss-cn-hangzhou.aliyuncs.com コンテンツ-長さ: 186 日付: 5月4日金曜日2012 03:21:12 GMT 権限付与: OSS qn6qrrqxo2oawuk53otf ****:KU5h8YMUC78M30dXqf3JxrT ***** <?xml version="1.0" encoding="UTF-8"?> <CORSConfiguration> <CORSRule> <AllowedOrigin>*</AllowedOrigin> <AllowedMethod>PUT</AllowedMethod> <AllowedMethod>GET</AllowedMethod> <AllowedHeader> 権限付与 </AllowedHeader> </CORSRule> <CORSRule> <AllowedOrigin>http://example.com</AllowedOrigin> <AllowedOrigin>http://example.net</AllowedOrigin> <AllowedMethod>GET</AllowedMethod> <AllowedHeader> 権限付与 </AllowedHeader> <ExposeHeader>x-oss-test</ExposeHeader> <ExposeHeader>x-oss-test1</ExposeHeader> <MaxAgeSeconds>100</MaxAgeSeconds> </CORSRule> <ResponseVary>false</ResponseVary> </CORSConfiguration >
レスポンスの例
HTTP/1.1 200 OK x-oss-request-id: 50519080C4689A033D0 ***** 日付: 5月4日金曜日2012 03:21:12 GMT コンテンツ長: 0 接続: キープアライブ サーバー: AliyunOSS x-oss-server-time: 94
SDK
次のプログラミング言語のOSS SDKを使用して、PutBucketCors操作を呼び出すことができます。
エラーコード
エラーコード | HTTPステータスコード | 説明 |
InvalidDigest | 400 | リクエストボディに基づいてOSSによって計算されるContent-MD5値は、リクエストヘッダーに指定されているContent-MD5値とは異なります。 |