すべてのプロダクト
Search
ドキュメントセンター

:CORS

最終更新日:Dec 19, 2023

クロスオリジンリソース共有 (CORS) は、webアプリケーションサーバーがクロスオリジンアクセスを制御し、クロスオリジンデータ送信を安全にするために、HTML5によって提供される標準のクロスオリジンソリューションです。

使用上の注意

  • このトピックでは、中国 (杭州) リージョンのパブリックエンドポイントを使用します。 OSSと同じリージョンにある他のAlibaba Cloudサービスを使用してOSSにアクセスする場合は、内部エンドポイントを使用します。 OSSでサポートされているリージョンとエンドポイントの詳細については、「リージョンとエンドポイント」をご参照ください。

  • このトピックでは、アクセス資格情報は環境変数から取得します。 アクセス資格情報の設定方法の詳細については、「アクセス資格情報の設定」をご参照ください。

  • このトピックでは、OSSエンドポイントを使用してOSSClientインスタンスを作成します。 カスタムドメイン名またはSTS (Security Token Service) を使用してOSSClientインスタンスを作成する場合は、「初期化」をご参照ください。

  • CORSルールを設定するには、oss:PutBucketCors権限が必要です。 CORSルールを照会するには、oss:GetBucketCors権限が必要です。 CORSルールを削除するには、oss:DeleteBucketCors権限が必要です。 詳細については、「RAMユーザーへのカスタムポリシーのアタッチ」をご参照ください。

CORS ルールの設定

次のサンプルコードは、特定のバケットにCORSルールを設定する方法の例を示しています。

パッケージメイン

import (import (import)
"fmt"
「github.com/aliyun/aliyun-oss-go-sdk/oss」
"os"
)

func main() {
// バケットの名前を指定します。 
	bucketName := "yourBucketName"

// 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。 
	provider, err := oss.NewEnvironmentVariableCredentialsProvider()
if err! =nil {
fmt.Println("Error:", err)
os.Exit(-1)
}

// OSSClientインスタンスを作成します。 
	// バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 実際のエンドポイントを指定します。 
	client, err := oss.New("yourEndpoint", ", " ", ", oss.SetCredentialsProvider(&provider))
if err! =nil {
fmt.Println("Error:", err)
os.Exit(-1)
}

isTrue := true
rule1 := oss.CORSRule {
AllowedOrigin: []string{"*"} 、AllowedMethod: []string{"PUT", "GET", "POST"},
AllowedHeader: []string {},
ExposeHeader: []string {},
MaxAgeSeconds: 100、}

rule2 := oss.CORSRule {
AllowedOrigin: []string{"http://www.a.com", "http://www.b.com"},
AllowedMethod: []string{"GET"} 、AllowedHeader: []string{"Authorization"},
ExposeHeader: []string{"x-oss-test-01" 、"x-oss-test-02"} 、MaxAgeSeconds: 100、}

put := oss.PutBucketCORS{}
put.CORSRules = []oss.CORSRule{rule1,rule2}
put.ResponseVary = &isTrue
// CORSルールを作成します。 
	err = client.SetBucketCORSV2(bucketName, put)
if err! =nil {
fmt.Println("Error:", err)
os.Exit(-1)
}

fmt.Println (「セット成功」)
} 

CORSルールの照会

次のサンプルコードは、特定のバケットに設定されているCORSルールを照会する方法の例を示しています。

パッケージメイン

import (import (import)
"fmt"
「github.com/aliyun/aliyun-oss-go-sdk/oss」
"os"
)

func main() {
// バケットの名前を指定します。 
	bucketName := "yourBucketName"

// 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。 
	provider, err := oss.NewEnvironmentVariableCredentialsProvider()
if err! =nil {
fmt.Println("Error:", err)
os.Exit(-1)
}

// OSSClientインスタンスを作成します。 
	// バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 実際のエンドポイントを指定します。 
	client, err := oss.New("yourEndpoint", ", " ", ", oss.SetCredentialsProvider(&provider))
if err! =nil {
fmt.Println("Error:", err)
os.Exit(-1)
}


// CORSルールを照会します。 
	corsRes, err := client.GetBucketCORS(bucketName)
if err! =nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
for _, rule := range corsRes.CORSRules {
fmt.Printf("Cors Rules Allowed Origin:% s\n", rule.AllowedOrigin)
fmt.Printf("Cors Rules Allowed Method:% s\n", rule.AllowedMethod)
fmt.Printf("Cors Rules Allowed Header:% s\n", rule.AllowedHeader)
fmt.Printf("Cors Rules Expose Header:% s\n", rule.ExposeHeader)
fmt.Printf("Cors Rules Max Age Seconds:% d\n", rule.MaxAgeSeconds)
}
if corsRes.ResponseVary! =nil {
fmt.Printf("Cors Rules Response Vary:% t\n" 、* corsRes.ResponseVary)
}
} 

CORS ルールの削除

次のサンプルコードは、特定のバケットに設定されているCORSルールを削除する方法の例を示しています。

パッケージメイン

import (import (import)
    "fmt"
    "os"
    「github.com/aliyun/aliyun-oss-go-sdk/oss」
)

func main() {
    /// 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。 
    provider, err := oss.NewEnvironmentVariableCredentialsProvider()
    if err! =nil {
        fmt.Println("Error:", err)
        os.Exit(-1)
    }

    // Create an OSSClient instance. 
    // バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 実際のエンドポイントを指定します。 
    client, err := oss.New("yourEndpoint", ", " ", ", oss.SetCredentialsProvider(&provider))
    if err! =nil {
        fmt.Println("Error:", err)
        os.Exit(-1)
    }

    // バケットの名前を指定します。 例: examplebucket. 
    bucketName := "examplebucket"

    // CORSルールを削除します。 
    err = client.DeleteBucketCORS(bucketName)
    if err! =nil {
        fmt.Println("Error:", err)
        os.Exit(-1)
    }
}          

参考資料

  • CORSルールの管理に使用される完全なサンプルコードについては、『GitHub』をご参照ください。

  • CORSルールを設定するために呼び出すことができるAPI操作の詳細については、「PutBucketCors」をご参照ください。

  • CORSルールを照会するために呼び出すAPI操作の詳細については、「GetBucketCors」をご参照ください。

  • CORSルールを削除するために呼び出すことができるAPI操作の詳細については、「DeleteBucketCors」をご参照ください。