tencent cloud

文档反馈

防盗链

最后更新时间:2024-01-05 14:52:46

    简介

    本文档提供关于存储桶 Referer 白名单或者黑名单的 API 概览和 SDK 示例代码。
    API
    操作名
    操作描述
    设置存储桶 Referer
    设置存储桶 Referer 白名单或者黑名单
    查询存储桶 Referer
    查询存储桶 Referer 白名单或者黑名单

    设置存储桶 Referer

    功能说明

    使用 .NET SDK 为存储桶设置 Referer 白名单或者黑名单,并读取存储桶的 Referer 配置。
    说明
    存储桶防盗链配置从 5.4.24 版本开始支持,下载新版 SDK 前往 Releases 或参见 快速入门
    查看版本更新日志,请前往 GitHub

    示例代码

    using COSXML.Model.Tag;
    using COSXML.Model.Bucket;
    using COSXML.Auth;
    using System;
    using COSXML;
    
    namespace COSSnippet
    {
    public class BucketRefererModel {
    
    private CosXml cosXml;
    
    BucketRefererModel() {
    CosXmlConfig config = new CosXmlConfig.Builder()
    .SetRegion("COS_REGION") // 设置默认的地域, COS 地域的简称请参照 https://www.tencentcloud.com/document/product/436/6224?from_cn_redirect=1
    .Build();
    
    string secretId = "SECRET_ID"; // 云 API 密钥 SecretId, 获取 API 密钥请参照 https://console.tencentcloud.com/cam/capi
    string secretKey = "SECRET_KEY"; // 云 API 密钥 SecretKey, 获取 API 密钥请参照 https://console.tencentcloud.com/cam/capi
    long durationSecond = 600; //每次请求签名有效时长,单位为秒
    QCloudCredentialProvider qCloudCredentialProvider = new DefaultQCloudCredentialProvider(secretId,
    secretKey, durationSecond);
    
    this.cosXml = new CosXmlServer(config, qCloudCredentialProvider);
    }
    
    // 设置存储桶防盗链
    public void PutBucketReferer()
    {
    //.cssg-snippet-body-start:[put-bucket-cors]
    try
    {
    // 存储桶名称,此处填入格式必须为 BucketName-APPID, 其中 APPID 获取参考 https://console.tencentcloud.com/developer
    string bucket = "examplebucket-1250000000";
    PutBucketRefererRequest request = new PutBucketRefererRequest(bucket);
    // 设置防盗链规则
    RefererConfiguration configuration = new RefererConfiguration();
    // 是否开启防盗链,枚举值:Enabled、Disabled
    configuration.Status = "Enabled";
    // 防盗链类型,枚举值:Black-List、White-List
    configuration.RefererType = "White-List";
    // 生效域名列表,支持多个域名且为前缀匹配,支持带端口的域名和 IP, 支持通配符*,做二级域名或多级域名的通配
    configuration.domainList = new DomainList();
    // 单条生效域名 例如www.qq.com/example,192.168.1.2:8080, *.qq.com
    configuration.domainList.AddDomain("*.domain1.com");
    configuration.domainList.AddDomain("*.domain2.com");
    // 是否允许空 Referer 访问,枚举值:Allow、Deny,默认值为 Deny
    configuration.EmptyReferConfiguration = "Deny";
    request.SetRefererConfiguration(configuration);
    //执行请求
    PutBucketRefererResult result = cosXml.PutBucketReferer(request);
    //请求成功
    Console.WriteLine(result.GetResultInfo());
    }
    catch (COSXML.CosException.CosClientException clientEx)
    {
    //请求失败
    Console.WriteLine("CosClientException: " + clientEx);
    }
    catch (COSXML.CosException.CosServerException serverEx)
    {
    //请求失败
    Console.WriteLine("CosServerException: " + serverEx.GetInfo());
    }
    
    //.cssg-snippet-body-end
    }
    
    // 获取存储桶防盗链规则
    public void GetBucketReferer()
    {
    //.cssg-snippet-body-start:[get-bucket-cors]
    try
    {
    // 存储桶名称,此处填入格式必须为 bucketname-APPID, 其中 APPID 获取参考 https://console.tencentcloud.com/developer
    string bucket = "examplebucket-1250000000";
    GetBucketRefererRequest request = new GetBucketRefererRequest(bucket);
    // 执行请求
    GetBucketRefererResult result = cosXml.GetBucketReferer(request);
    Console.WriteLine(result.GetResultInfo());
    // Status参数
    Console.WriteLine(result.refererConfiguration.Status);
    // Referer名单类型
    Console.WriteLine(result.refererConfiguration.RefererType);
    // 名单中的域名列表
    foreach (string domain in result.refererConfiguration.domainList.domains)
    {
    Console.WriteLine(domain);
    }
    }
    catch (COSXML.CosException.CosClientException clientEx)
    {
    //请求失败
    Console.WriteLine("CosClientException: " + clientEx);
    }
    catch (COSXML.CosException.CosServerException serverEx)
    {
    //请求失败
    Console.WriteLine("CosServerException: " + serverEx.GetInfo());
    }
    
    //.cssg-snippet-body-end
    }
    
    // .cssg-methods-pragma
    
    static void Main(string[] args)
    {
    BucketRefererModel m = new BucketRefererModel();
    // 设置存储桶跨域规则
    m.PutBucketReferer();
    // 获取存储桶跨域规则
    m.GetBucketReferer();
    // .cssg-methods-pragma
    }
    }
    }
    
    说明
    更多完整示例,请前往 GitHub 查看。
    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持