クロスオリジンリソース共有 (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」をご参照ください。