开发者社区> 问答> 正文

Go-SDK之如何实现设置跨域资源共享?

跨域资源共享(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)
    }

展开
收起
青衫无名 2017-10-19 14:42:09 1782 0
0 条回答
写回答
取消 提交回答
问答排行榜
最热
最新

相关电子书

更多
gohbase :HBase go客户端 立即下载
Go构建日请求千亿级微服务实践 立即下载
一个跨平台的云服务SDK需要什么 立即下载