OSS是按使用收费的服务,为了防止用户在OSS上的数据被其他人盗链,OSS支持 基于HTTP header中表头字段referer的防盗链方法。更多OSS防盗链请参考: OSS 防盗链
提示:
- 设置防盗链的示例代码在sample/bucket_referer.go。
import "github.com/aliyun/aliyun-oss-go-sdk/oss"
client, err := oss.New("Endpoint", "AccessKeyId", "AccessKeySecret")
if err != nil {
// HandleError(err)
}
referers := []string{"http://www.aliyun.com",
"http://www.???.aliyuncs.com",
"http://www.*.com"}
err = client.SetBucketReferer("my-bucket", referers, false)
if err != nil {
// HandleError(err)
}
import "fmt"
import "github.com/aliyun/aliyun-oss-go-sdk/oss"
client, err := oss.New("Endpoint", "AccessKeyId", "AccessKeySecret")
if err != nil {
// HandleError(err)
}
refRes, err := client.GetBucketReferer("my-bucket")
if err != nil {
// HandleError(err)
}
fmt.Println("Referers:", refRes.RefererList,
"AllowEmptyReferer:", refRes.AllowEmptyReferer)
import "github.com/aliyun/aliyun-oss-go-sdk/oss"
client, err := oss.New("Endpoint", "AccessKeyId", "AccessKeySecret")
if err != nil {
// HandleError(err)
}
err = client.SetBucketReferer("my-bucket", []string{}, true)
if err != nil {
// HandleError(err)
}
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
阿里云对象存储服务(OSS)提供了一种基于HTTP头部中Referer字段的防盗链功能,以保护您的数据不被未经授权的第三方网站盗用。以下是如何使用阿里云OSS SDK for Go来管理防盗链设置的简要指南:
通过调用SetBucketReferer
方法,您可以为指定的Bucket设置允许访问的Referer列表。示例代码展示了如何设置包含具体域名、通配符匹配以及是否允许空Referer的白名单。
import "github.com/aliyun/aliyun-oss-go-sdk/oss"
client, err := oss.New("YourEndpoint", "YourAccessKeyId", "YourAccessKeySecret")
if err != nil {
// 处理错误
}
// 定义Referer白名单列表
referers := []string{
"http://www.aliyun.com",
"http://www.???.aliyuncs.com", // 通配符匹配,如http://www.a.aliyuncs.com或http://www.b.aliyuncs.com
"http://www.*.com", // 通用通配符匹配任意二级域名
}
// 设置白名单,不允许空Referer访问
err = client.SetBucketReferer("YourBucketName", referers, false)
if err != nil {
// 处理错误
}
要查看当前Bucket的Referer设置,可以使用GetBucketReferer
方法。
import "fmt"
import "github.com/aliyun/aliyun-oss-go-sdk/oss"
client, err := oss.New("YourEndpoint", "YourAccessKeyId", "YourAccessKeySecret")
if err != nil {
// 处理错误
}
refRes, err := client.GetBucketReferer("YourBucketName")
if err != nil {
// 处理错误
}
fmt.Println("Referers:", refRes.RefererList, "AllowEmptyReferer:", refRes.AllowEmptyReferer)
如果需要清空白名单,即不允许任何Referer访问(除非明确设置allowEmptyReferer
为true),可以通过传递一个空的Referer列表和相应的allowEmptyReferer
值来实现。
err = client.SetBucketReferer("YourBucketName", []string{}, true)
if err != nil {
// 处理错误
}
请确保替换上述代码中的YourEndpoint
、YourAccessKeyId
、YourAccessKeySecret
以及YourBucketName
为您的实际配置信息。这些操作可以帮助您有效地管理和控制OSS资源的访问权限,防止非法盗链行为。