edit-icon download-icon

PutBucketcors

最終更新日: Aug 01, 2018

PutBucketcors 操作を使用すると、指定したバケットの CORS ルールを設定できます。元のルールが存在する場合は上書きされます。

リクエスト構文

  1. PUT /?cors HTTP/1.1
  2. Date: GMT Date
  3. Content-Length: ContentLength
  4. Content-Type: application/xml
  5. Host: BucketName.oss-cn-hangzhou.aliyuncs.com
  6. Authorization: SignatureValue
  7. <?xml version="1.0" encoding="UTF-8"?>
  8. <CORSConfiguration>
  9. <CORSRule>
  10. <AllowedOrigin>the origin you want allow CORS request from</AllowedOrigin>
  11. <AllowedOrigin>…</AllowedOrigin>
  12. <AllowedMethod>HTTP method</AllowedMethod>
  13. <AllowedMethod>…</AllowedMethod>
  14. <AllowedHeader> headers that allowed browser to send</AllowedHeader>
  15. <AllowedHeader>…</AllowedHeader>
  16. <ExposeHeader> headers in response that can access from client app</ExposeHeader>
  17. <ExposeHeader>…</ExposeHeader>
  18. <MaxAgeSeconds>time to cache pre-fight response</MaxAgeSeconds>
  19. </CORSRule>
  20. <CORSRule>
  21. </CORSRule>
  22. </CORSConfiguration >

リクエストの要素

名前 説明 必須
CORSRule container CORS ルールのコンテナー。バケットごとに最大 10 のルールが許可されます。
親ノード: CORSConfiguration
はい
AllowedOrigin string   クロスドメインリクエストが許可されているオリジンを示します。複数の要素を使用して、許可されるオリジンを複数指定できます。 各ルールでワイルドカード “*“ を 1 つ使用できます。”*“ が指定されている場合、すべてのオリジンのクロスドメインリクエストが許可されます。
親ノード: CORSRule
はい
AllowedMethod enumeration (GET、PUT、DELETE、POST、HEAD) クロスドメインリクエストで許可されるメソッドを指定します。
親ノード: CORSRule
はい
AllowedHeader string OPTIONS プリフェッチコマンドの Access-Control-Request-Headers で指定されたヘッダーを許可するかどうかを制御します。Access-Control-Request-Headers で指定された各ヘッダーが AllowedHeader の値と一致している必要があります。各ルールでワイルドカード “*“ を 1 つ使用できます。
親ノード: CORSRule
いいえ
ExposeHeader string 応答ヘッダーを指定して、ユーザーがアプリケーション (Javascript の XMLHttpRequest オブジェクトなど) からアクセスできるようにします。 ワイルドカード “*“ は使用できません。
親ノード: CORSRule
いいえ
MaxAgeSeconds integer 特定のリソースに対するブラウザープリフェッチ (OPTIONS) リクエストの結果のキャッシュ期間を指定します。単位は秒です。 CORSRule ごとに 1 つ指定できます。
親ノード: CORSRule
いいえ
CORSConfiguration container バケットの CORS ルールのコンテナー。
親ノード: なし
はい

詳細分析

  • デフォルトでは、CORS はバケットで無効になっており、 すべてのクロスドメインリクエストのオリジンが禁止されます。
  • アプリケーションで CORS を使用するには (ブラウザーの XMLHttpRequest 機能を使用して www.a.com から OSS にアクセスする場合など)、このインターフェイスを使用して手動で CORS ルールをアップロードして、CORS を有効にする必要があります。このルールは XML ドキュメントに記述します。
  • 各バケットの CORS 設定は複数の CORS ルールによって指定されます。バケットごとに最大 10 のルールが許可されます。アップロードする XML ドキュメントはサイズが 16 KB 以下である必要があります。
  • OSS は、クロスドメインリクエスト (または OPTIONS リクエスト) を受信すると、バケットの CORS ルールを読み取り、関連する権限を確認します。各ルールを順番に調べて、最初に一致したルールを使用してリクエストを承認し、対応するヘッダーを返します。一致するルールがない場合、CORS ヘッダーは含まれません。
  • CORS ルールに一致するには 3 つの条件を満たしている必要があります。まず、リクエストの Origin が AllowedOrigin と一致している必要があります。次に、リクエストのメソッド (GET、PUT など) や、OPTIONS リクエストの Access-Control-Request-Method ヘッダーに対応するメソッドが、AllowedMethod と一致している必要があります。最後に、OPTIONS リクエストの Access-Control-Request-Headers に含まれている各ヘッダーが AllowedHeader と一致している必要があります。
  • Content-MD5 リクエストヘッダーをアップロードした場合は、本文の Content-MD5 が計算されて、両者が同じであるかどうかが確認されます。異なる場合は、エラーコード InvalidDigest が返されます。

バケットの CORS ルールを追加する例:

  1. PUT /?cors HTTP/1.1
  2. Host: oss-example.oss-cn-hangzhou.aliyuncs.com
  3. Content-Length: 186
  4. Date: Fri, 04 May 2012 03:21:12 GMT
  5. Authorization: OSS qn6qrrqxo2oawuk53otfjbyc:KU5h8YMUC78M30dXqf3JxrTZHiA=
  6. <?xml version="1.0" encoding="UTF-8"?>
  7. <CORSConfiguration>
  8. <CORSRule>
  9. <AllowedOrigin>*</AllowedOrigin>
  10. <AllowedMethod>PUT</AllowedMethod>
  11. <AllowedMethod>GET</AllowedMethod>
  12. <AllowedHeader>Authorization</AllowedHeader>
  13. </CORSRule>
  14. <CORSRule>
  15. <AllowedOrigin>http://www.a.com</AllowedOrigin>
  16. <AllowedOrigin>http://www.b.com</AllowedOrigin>
  17. <AllowedMethod>GET</AllowedMethod>
  18. <AllowedHeader> Authorization</AllowedHeader>
  19. <ExposeHeader>x-oss-test</ExposeHeader>
  20. <ExposeHeader>x-oss-test1</ExposeHeader>
  21. <MaxAgeSeconds>100</MaxAgeSeconds>
  22. </CORSRule>
  23. </CORSConfiguration >

レスポンスの例:

  1. HTTP/1.1 200 OK
  2. x-oss-request-id: 50519080C4689A033D00235F
  3. Date: Fri, 04 May 2012 03:21:12 GMT
  4. Content-Length: 0
  5. Connection: keep-alive
  6. Server: AliyunOSS