跨域资源共享(Cross-origin resource sharing,简称CORS)允许Web端的应用程序访问不属于本域的资源。OSS提供跨域资源共享接口,方便您控制跨域访问的权限。

更多关于跨域资源共享的介绍,请参见开发指南中的设置跨域访问和API参考中PutBucketcors

跨域资源共享的完整代码请参见GitHub

设置跨域资源共享规则

以下代码用于设置指定存储空间的跨域资源共享规则:

  1. package main
  2. import (
  3. "fmt"
  4. "os"
  5. "github.com/aliyun/aliyun-oss-go-sdk/oss"
  6. )
  7. func main() {
  8. // 创建OSSClient实例。
  9. client, err := oss.New("<yourEndpoint>", "<yourAccessKeyId>", "<yourAccessKeySecret>")
  10. if err != nil {
  11. fmt.Println("Error:", err)
  12. os.Exit(-1)
  13. }
  14. bucketName := "<yourBucketName>"
  15. rule1 := oss.CORSRule{
  16. AllowedOrigin: []string{"*"},
  17. AllowedMethod: []string{"PUT", "GET"},
  18. AllowedHeader: []string{},
  19. ExposeHeader: []string{},
  20. MaxAgeSeconds: 200,
  21. }
  22. rule2 := oss.CORSRule{
  23. AllowedOrigin: []string{"http://www.a.com", "http://www.b.com"},
  24. AllowedMethod: []string{"POST"},
  25. AllowedHeader: []string{"Authorization"},
  26. ExposeHeader: []string{"x-oss-test", "x-oss-test1"},
  27. MaxAgeSeconds: 100,
  28. }
  29. // 设置跨域资源共享规则。
  30. err = client.SetBucketCORS(bucketName, []oss.CORSRule{rule1, rule2})
  31. if err != nil {
  32. fmt.Println("Error:", err)
  33. os.Exit(-1)
  34. }
  35. }

获取跨域资源共享规则

以下代码用于获取跨域资源共享规则:

  1. package main
  2. import (
  3. "fmt"
  4. "os"
  5. "github.com/aliyun/aliyun-oss-go-sdk/oss"
  6. )
  7. func main() {
  8. // 创建OSSClient实例。
  9. client, err := oss.New("<yourEndpoint>", "<yourAccessKeyId>", "<yourAccessKeySecret>")
  10. if err != nil {
  11. fmt.Println("Error:", err)
  12. os.Exit(-1)
  13. }
  14. bucketName := "<yourBucketName>"
  15. // 获取跨域资源共享规则。
  16. corsRes, err := client.GetBucketCORS(bucketName)
  17. if err != nil {
  18. fmt.Println("Error:", err)
  19. os.Exit(-1)
  20. }
  21. fmt.Println("Bucket CORS:", corsRes.CORSRules)
  22. }

删除跨域资源共享规则

以下代码用于删除指定存储空间的所有跨域资源共享规则:

  1. package main
  2. import (
  3. "fmt"
  4. "os"
  5. "github.com/aliyun/aliyun-oss-go-sdk/oss"
  6. )
  7. func main() {
  8. // 创建OSSClient实例。
  9. client, err := oss.New("<yourEndpoint>", "<yourAccessKeyId>", "<yourAccessKeySecret>")
  10. if err != nil {
  11. fmt.Println("Error:", err)
  12. os.Exit(-1)
  13. }
  14. bucketName := "<yourBucketName>"
  15. // 删除跨域资源共享规则。
  16. err = client.DeleteBucketCORS(bucketName)
  17. if err != nil {
  18. fmt.Println("Error:", err)
  19. os.Exit(-1)
  20. }
  21. }