CORS 設定をテストするために、CORS プリフライトリクエストを OPTIONS
メソッドで送信して、リクエストの送信が許容できる場合にサーバーが応答できるようにします。Amazon S3 がブラウザからプリフライトリクエストを受け取ると、S3 はバケットの CORS 設定を評価し、受信ブラウザリクエストに一致する最初の CORSRule
ルールを使用して、クロスオリジンリクエストを有効にします。ルールが一致するには、次の条件を満たしている必要があります。
-
バケットへの CORS リクエストの
Origin
ヘッダーは、CORS 設定のAllowedOrigins
エレメントのオリジンと一致している必要があります。 -
バケットへの CORS リクエストの
Access-Control-Request-Method
で指定されている HTTP メソッドは、CORS 設定のAllowedMethods
エレメントに含まれているメソッドと一致している必要があります。 プリフライトリクエストの
Access-Control-Request-Headers
ヘッダーに含まれているヘッダーは、CORS 設定のAllowedHeaders
エレメントのヘッダーと一致している必要があります。
CORS 設定の例を次に示します。CORS 設定を作成するには、「CORS の設定」を参照してください。CORS 設定の例については、「CORS 設定のエレメント」を参照してください。
[
{
"AllowedHeaders": [
"Authorization"
],
"AllowedMethods": [
"GET"
"PUT",
"POST",
"DELETE"
],
"AllowedOrigins": [
"http://www.example1.com"
],
"ExposeHeaders": [
"x-amz-meta-custom-header"
]
}
]
CORS 設定をテストするには、次の CURL コマンドを使用してプリフライト OPTIONS
チェックを送信できます。CURL は、S3 とのやり取りに使用できるコマンドラインツールです。詳細については、「CURL
curl -v -X OPTIONS \ -H "Origin: http://www.example1.com" \ -H "Access-Control-Request-Method: PUT" \ -H "Access-Control-Request-Headers: Authorization" \ -H "Access-Control-Expose-Headers: x-amz-meta-custom-header"\ "http://bucket_name.s3.amazonaws.com/object_prefix_name"
上記の例では、curl -v -x OPTIONS
コマンドを使用してプリフライトリクエストを S3 に送信し、S3 がクロスオリジン http://www.example1.com
からオブジェクトに PUT
リクエストを送信することを許可しているかどうかを問い合わせます。ヘッダー Access-Control-Request-Headers
と Access-Control-Expose-Headers
はオプションです。
-
プリフライト
OPTIONS
リクエストのAccess-Control-Request-Method
ヘッダーに応答して、Amazon S3 は、リクエストされたメソッドが一致する場合に、許可されたメソッドのリストを返します。 -
プリフライト
OPTIONS
リクエストのAccess-Control-Request-Headers
ヘッダーに応答して、Amazon S3 は、リクエストされたヘッダーが一致する場合に、許可されたヘッダーのリストを返します。 -
プリフライト
OPTIONS
リクエストのAccess-Control-Expose-Headers
ヘッダーに応答して、Amazon S3 は、リクエストされたヘッダーがブラウザで実行されているスクリプトによってアクセスできるヘッダーと一致する場合に、許可されたヘッダーのリストを返します。
注記
プリフライトリクエストを送信するときに、いずれかの CORS リクエストヘッダーが許可されていない場合、レスポンス CORS ヘッダーは返されません。
このプリフライト OPTIONS
リクエストに応答して、200 OK
レスポンスを受け取ります。CORS のテスト時に受信される一般的なエラーコードと、CORS 関連の問題を解決するための詳細については、「CORS のトラブルシューティング」を参照してください。
< HTTP/1.1 200 OK < Date: Fri, 12 Jul 2024 00:23:51 GMT < Access-Control-Allow-Origin: http://www.example1.com < Access-Control-Allow-Methods: GET, PUT, POST, DELETE < Access-Control-Allow-Headers: Authorization < Access-Control-Expose-Headers: x-amz-meta-custom-header < Access-Control-Allow-Credentials: true < Vary: Origin, Access-Control-Request-Headers, Access-Control-Request-Method < Server: AmazonS3 < Content-Length: 0