edit-icon download-icon

Cross-Origin Resource Sharing

最終更新日: Aug 26, 2017

CORS を使用すると、Web アプリケーションから他のドメインのリソースにアクセスできます。OSS のインターフェイスを使用して、開発者はクロスオリジンアクセス権限を簡単に制御できます。CORSのの詳細はクロスオリジンアクセス設定をご参照ください。

OSS CORS 設定は一つ以上の CORS ルールを含んでいます。それぞれの CORS ルールは以下のパラメータが含まれます:

  • allowed_origins: クロスオリジン要求を許可するオリジンです。例:www.my-domain.com, *
  • allowed_methods: クロスオリジン要求に対する HTTP メソッド(PUT/POST/GET/DELETE/HEAD) を許可します。
  • allowed_headers: ヘッダーの事前取得コマンド(オプション)を許可します。例:x-oss-test, *
  • expose_headers: ヘッダーは、アプリケーション内のユーザアクセスを許可します。
  • max_age_seconds: 特定のリソースのためのブラウザ事前取得(オプション)要求の戻り値のキャッシュ時間です。

メモ: sample/bucket_cors.go に CORS の例のコードがあります。

CORS ルールの設定

CORS ルールの設定は、Client.SetBucketCORSを使用します:

  1. import "github.com/aliyun/aliyun-oss-go-sdk/oss"
  2. client, err := oss.New("Endpoint", "AccessKeyId", "AccessKeySecret")
  3. if err != nil {
  4. // HandleError(err)
  5. }
  6. rule1 := oss.CORSRule{
  7. AllowedOrigin: []string{"*"},
  8. AllowedMethod: []string{"PUT", "GET"},
  9. AllowedHeader: []string{},
  10. ExposeHeader: []string{},
  11. MaxAgeSeconds: 200,
  12. }
  13. rule2 := oss.CORSRule{
  14. AllowedOrigin: []string{"http://www.a.com", "http://www.b.com"},
  15. AllowedMethod: []string{"POST"},
  16. AllowedHeader: []string{"Authorization"},
  17. ExposeHeader: []string{"x-oss-test", "x-oss-test1"},
  18. MaxAgeSeconds: 100,
  19. }
  20. err = client.SetBucketCORS("my-bucket", []oss.CORSRule{rule1, rule2})
  21. if err != nil {
  22. // HandleError(err)
  23. }

CORS ルールの表示

CORS ルールの表示は、Client.GetBucketCORSを使用します:

  1. import "fmt"
  2. import "github.com/aliyun/aliyun-oss-go-sdk/oss"
  3. client, err := oss.New("Endpoint", "AccessKeyId", "AccessKeySecret")
  4. if err != nil {
  5. // HandleError(err)
  6. }
  7. corsRes, err := client.GetBucketCORS("my-bucket")
  8. if err != nil {
  9. // HandleError(err)
  10. }
  11. fmt.Println("Bucket CORS:", corsRes.CORSRules)

CORS ルールの削除

CORS ルールの削除は、Client.DeleteBucketCORSを使用します:

  1. import "github.com/aliyun/aliyun-oss-go-sdk/oss"
  2. client, err := oss.New("Endpoint", "AccessKeyId", "AccessKeySecret")
  3. if err != nil {
  4. // HandleError(err)
  5. }
  6. err = client.DeleteBucketCORS("my-bucket")
  7. if err != nil {
  8. // HandleError(err)
  9. }