クロスオリジンリクエストが送信される前に、ブラウザは、特定のオリジン、HTTPメソッド、およびヘッダー情報を含むプリフライト (OPTIONS) リクエストをObject Storage Service (OSS) に送信して、クロスオリジンリクエストを送信するかどうかを判断します。 ブラウザは、実際のリクエストがクロスオリジンリクエストであるかどうかに基づいて、プリフライトリクエストを送信するかどうかを自動的に決定します。
リクエスト構造
OPTIONS /ObjectName HTTP/1.1
ホスト: BucketName.oss-cn-hangzhou.aliyuncs.com
起源: 起源
Access-Control-Request-Method:HTTPメソッド
Access-Control-Request-Headers: リクエストヘッダー
リクエストヘッダー
ヘッダー | データ型 | 必須/任意 | 例 | 説明 |
---|---|---|---|---|
起源 | String | 必須 | http://www.example.com | クロスオリジンリクエストを識別するために使用されるリクエストのオリジン。
クロスオリジンリクエストで指定できるOriginヘッダーは1つだけです。 デフォルト値 : null 。 |
Access-Control-Request-Method | String | 必須 | PUT | 実際のクロスオリジンリクエストで使用するメソッド。
クロスオリジンリクエストで指定できるAccess-Control-Request-Methodヘッダーは1つだけです。 デフォルト値 : null 。 |
Access-Control-Request-Headers | String | 任意 | x-oss-test1,x-oss-test2 | 実際のクロスオリジンリクエストで送信されるカスタムヘッダー。
クロスオリジンリクエストでは、複数のカスタムヘッダーを設定できます。 カスタムヘッダーはコンマ (,) で区切ります。 デフォルト値 : null 。 |
レスポンスヘッダー
ヘッダー | データ型 | 例 | 説明 |
---|---|---|---|
アクセス制御-許可-オリジン | String | http://www.example.com | リクエストに含まれるオリジン。 要求が拒否された場合、応答にはヘッダーが含まれません。 |
アクセス制御-許可-メソッド | String | PUT | リクエストの HTTP メソッド。 要求が拒否された場合、応答にはヘッダーが含まれません。 |
アクセス制御-許可ヘッダー | String | x-oss-test,x-oss-test1 | リクエストに含まれるヘッダーのリスト。 リクエストに許可されていないヘッダーが含まれている場合、レスポンスにヘッダーが含まれていないため、リクエストは拒否されます。 |
アクセス制御-公開ヘッダー | String | x-oss-test1,x-oss-test2 | クライアント上のJavaScriptアプリケーションがアクセスできるヘッダーのリスト。 |
アクセス制御-Max-Age | Integer | 60 | ブラウザがプリフライトの結果をキャッシュするための最大時間。 (単位:秒) |
例
リクエストの例
オプション /testobject HTTP/1.1
ホスト: oss-example.oss-cn-hangzhou.aliyuncs.com
日付: 2月24日金曜日2012 05:45:34 GMT
起源: http://www.example.com
アクセス制御-リクエスト-メソッド: PUT
Access-Control-Request-Headers:x-oss-test1、x-oss-test2
レスポンスの例
HTTP/1.1 200 OK
x-oss-request-id: 5051845BC4689A033D00 ****
日付: 2月24日金曜日2012 05:45:34 GMT
アクセス制御-許可-オリジン: http://www.example.com
アクセス制御-許可-メソッド: PUT
Access-Control-Expose-Headers: x-oss-test1、x-oss-test2
接続: キープアライブ
コンテンツ長: 0
サーバー: AliyunOSS
エラーコード
エラーコード | HTTP ステータスコード | 説明 |
---|---|---|
AccessForbidden | 403 | OSSがクロスオリジンリクエストを許可していない場合、またはバケットのクロスオリジンリソース共有 (CORS) が無効になっている場合に返されるエラーメッセージ。 PutBucketCORSを呼び出して、バケットのCORSを有効にすることができます。 バケットに対してCORSが有効になり、ブラウザからプリフライトリクエストが送信されると、OSSは指定されたCORSルールに基づいて実際のクロスオリジンリクエストを許可するかどうかを決定します。 |