クロスオリジンリクエストが送信される前に、ブラウザは、特定のオリジン、HTTP メソッド、およびヘッダー情報を含むプリフライトリクエスト (OPTIONS) を Object Storage Service (OSS) に送信して、クロスオリジンリクエストを送信するかどうかを決定します。 ブラウザは、実際のリクエストがクロスオリジンリクエストであるかどうかによって、プリフライトリクエストを送信するかどうかを自動的に決定します。
リクエスト構造
OPTIONS /ObjectName HTTP/1.1
Host: BucketName.oss-cn-hangzhou.aliyuncs.com
Origin:Origin
Access-Control-Request-Method:HTTP method
Access-Control-Request-Headers:Request Headers
リクエストヘッダー
ヘッダー | タイプ | 必須 | 例 | 説明 |
Origin | String | はい | http://www.example.com | リクエストのオリジン。クロスオリジンリクエストを識別するために使用されます。 クロスオリジンリクエストでは、1 つの Origin ヘッダーのみを指定できます。 デフォルト値: null |
Access-Control-Request-Method | String | はい | PUT | 実際のクロスオリジンリクエストで使用するメソッド。 クロスオリジンリクエストでは、1 つの Access-Control-Request-Method ヘッダーのみを指定できます。 デフォルト値: null |
Access-Control-Request-Headers | String | いいえ | x-oss-test1,x-oss-test2 | 実際のクロスオリジンリクエストで送信されるカスタムヘッダー。 クロスオリジンリクエストでは、複数カスタムヘッダーを設定できます。カスタムヘッダーはカンマ (,) で区切ります。 デフォルト値: null |
レスポンスヘッダー
ヘッダー | タイプ | 例 | 説明 |
Access-Control-Allow-Origin | String | http://www.example.com | リクエストに含まれるオリジン。リクエストが拒否された場合、レスポンスにはこのヘッダーは含まれません。 |
Access-Control-Allow-Methods | String | PUT | リクエストの HTTP メソッド。リクエストが拒否された場合、レスポンスにはこのヘッダーは含まれません。 |
Access-Control-Allow-Headers | String | x-oss-test,x-oss-test1 | リクエストに含まれるヘッダーのリスト。許可されていないヘッダーがリクエストに含まれている場合、レスポンスにはヘッダーが含まれず、リクエストは拒否されます。 |
Access-Control-Expose-Headers | String | x-oss-test1,x-oss-test2 | クライアントの JavaScript アプリケーションからアクセスできるヘッダーのリスト。 |
Access-Control-Max-Age | Integer | 60 | ブラウザがプリフライトリクエストの結果をキャッシュする最大期間。単位: 秒。 |
例
リクエストの例
OPTIONS /testobject HTTP/1.1
Host: oss-example.oss-cn-hangzhou.aliyuncs.com
Date: Fri, 24 Feb 2012 05:45:34 GMT
Origin:http://www.example.com
Access-Control-Request-Method:PUT
Access-Control-Request-Headers:x-oss-test1,x-oss-test2
レスポンスの例
HTTP/1.1 200 OK
x-oss-request-id: 5051845BC4689A033D00****
Date: Fri, 24 Feb 2012 05:45:34 GMT
Access-Control-Allow-Origin: http://www.example.com
Access-Control-Allow-Methods: PUT
Access-Control-Expose-Headers: x-oss-test1,x-oss-test2
Connection: keep-alive
Content-Length: 0
Server: AliyunOSS
ossutil
この操作に対応する ossutil コマンドについては、「option-object」をご参照ください。
エラーコード
エラーコード | HTTP ステータスコード | 説明 |
AccessForbidden | 403 | OSS がクロスオリジンリクエストを許可しないか、またはバケットでオリジン間リソース共有 (CORS) が無効になっているために返されるエラーメッセージ。 PutBucketCORS を呼び出して、バケットの CORS を有効にできます。バケットの CORS が有効になり、ブラウザからプリフライトリクエストが送信されると、OSS は指定された CORS ルールに基づいて実際のクロスオリジンリクエストを許可するかどうかを決定します。 |