OSS是按使用收費的服務,為了防止使用者在OSS上的資料被其他人盜鏈,OSS支援基於HTTP header中表頭欄位referer的防盜鏈方法。
設定Referer白名單
通過下面代碼設定Referer白名單:
using Aliyun.OSS;
var client = new OssClient(endpoint, accessKeyId, accessKeySecret);
var refererList = new List<string>();
// 添加referer項
refererList.Add("http://www.aliyun.com");
refererList.Add("http://www.*.com");
refererList.Add("http://www.?.aliyuncs.com");
// 允許referer欄位為空,並設定儲存空間Referer列表
var request = new SetBucketRefererRequest(bucketName, refererList);
request. AllowEmptyReferer = true;
client.setBucketReferer(bucketName, br);
Console.WriteLine("設定儲存空間{0}的referer白名單成功", bucketName);
提示:
- 完整代碼參考:GitHub
注意:
- Referer參數支援萬用字元“*”和“?”,更多詳細的規則配置可以參考開發人員指南OSS防盜鏈
獲取Referer白名單
using Aliyun.OSS;
var client = new OssClient(endpoint, accessKeyId, accessKeySecret);
var rc = client.GetBucketReferer(bucketName);
Console.WriteLine("allow?" + (rc.AllowEmptyReferer ? "yes" : "no"));
if (rc.RefererList.Referers != null)
{
for (var i = 0; i < rc.RefererList.Referers.Length; i++)
Console.WriteLine(rc.RefererList.Referers[i]);
}
else
{
Console.WriteLine("Empty Referer List");
}
提示:
- 完整代碼參考:GitHub
清空Referer白名單
Referer白名單不能直接清空,只能通過重新設定來覆蓋之前的規則。
using Aliyun.OSS;
var client = new OssClient(endpoint, accessKeyId, accessKeySecret);
// 預設允許referer欄位為空,且referer白名單為空。
var request = new SetBucketRefererRequest(bucketName);
client.SetBucketReferer(request);
Console.WriteLine("清空儲存空間{0}的referer白名單成功", bucketName);