全部产品
存储与CDN 数据库 安全 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 开发者工具 解决方案 物联网
对象存储 OSS

设置跨域资源共享

更新时间:2017-06-07 13:26:11

跨域资源共享(CORS)允许web端的应用程序访问不属于本域的资源。OSS提供接口 方便开发者控制跨域访问的权限。更多关于跨域资源共享的内容请参考 OSS 跨域资源共享

OSS的跨域共享设置由一条或多条CORS规则组成,每条CORS规则包含以下设置:

  • allowed_origins,允许的跨域请求的来源,如www.my-domain.com, *
  • allowed_methods,允许的跨域请求的HTTP方法(PUT/POST/GET/DELETE/HEAD)
  • allowed_headers,在OPTIONS预取指令中允许的header,如x-oss-test, *
  • expose_headers,允许用户从应用程序中访问的响应头
  • max_age_seconds, 浏览器对特定资源的预取(OPTIONS)请求返回结果的缓存时间

提示:

  • 跨域资源共享的示例代码在sample/bucket_cors.go

设置CORS规则

通过Client.SetBucketCORS设置CORS规则:

    import "github.com/aliyun/aliyun-oss-go-sdk/oss"

    client, err := oss.New("Endpoint", "AccessKeyId", "AccessKeySecret")
    if err != nil {
        // HandleError(err)
    }

    rule1 := oss.CORSRule{
        AllowedOrigin: []string{"*"},
        AllowedMethod: []string{"PUT", "GET"},
        AllowedHeader: []string{},
        ExposeHeader:  []string{},
        MaxAgeSeconds: 200,
    }

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

    err = client.SetBucketCORS("my-bucket", []oss.CORSRule{rule1, rule2})
    if err != nil {
        // HandleError(err)
    }

查看CORS规则

通过Client.GetBucketCORS查看CORS规则:

    import "fmt"
    import "github.com/aliyun/aliyun-oss-go-sdk/oss"

    client, err := oss.New("Endpoint", "AccessKeyId", "AccessKeySecret")
    if err != nil {
        // HandleError(err)
    }

    corsRes, err := client.GetBucketCORS("my-bucket")
    if err != nil {
        // HandleError(err)
    }
    fmt.Println("Bucket CORS:", corsRes.CORSRules)

清空CORS规则

通过Client.DeleteBucketCORS清空CORS规则

    import "github.com/aliyun/aliyun-oss-go-sdk/oss"

    client, err := oss.New("Endpoint", "AccessKeyId", "AccessKeySecret")
    if err != nil {
        // HandleError(err)
    }

    err = client.DeleteBucketCORS("my-bucket")
    if err != nil {
        // HandleError(err)
    }
本文导读目录