跨域資源共用(CORS)允許web端的應用程式訪問不屬於本域的資源。OSS提供介面方便開發人員控制跨域訪問的許可權。
設定CORS規則
通過setBucketCors 方法將指定的儲存空間上設定一個跨域資源共用CORS的規則,如果原規則存在則覆蓋原規則。具體的規則主要通過CORSRule類來進行參數設定。代碼如下:
using Aliyun.OSS;
// 初始化OssClient
var client = new OssClient(endpoint, accessKeyId, accessKeySecret);
var req = new SetBucketCorsRequest(bucketName);
var r1 = new CORSRule();
//指定允許跨域請求的來源
r1.AddAllowedOrigin("http://www.a.com");
//指定允許的跨域要求方法(GET/PUT/DELETE/POST/HEAD)
r1.AddAllowedMethod("POST");
//控制在OPTIONS預取指令中Access-Control-Request-Headers頭中指定的header是否允許。
r1.AddAllowedHeader("*");
//指定允許使用者從應用程式中訪問的回應標頭
r1.AddExposeHeader("x-oss-test");
req.AddCORSRule(r1);
client.SetBucketCors(req);
提示:
- 完整代碼參考:GitHub
注意
:
- 每個儲存空間最多隻能使用10條規則。
- AllowedOrigins和AllowedMethods都能夠最多支援一個”*”萬用字元。”*”表示對於所有的域來源或者操作都滿足。
- 而AllowedHeaders和ExposeHeaders不支援萬用字元。
獲取CORS規則
我們可以參考儲存空間的CORS規則,通過GetBucketCors方法。代碼如下:
using Aliyun.OSS;
// 初始化OssClient
var client = new OssClient(endpoint, accessKeyId, accessKeySecret);
var rules = client.GetBucketCors(bucketName);
foreach (var rule in rules)
{
Console.WriteLine("AllowedOrigins:{0}", rule.AllowedOrigins);
Console.WriteLine("AllowedMethods:{0}", rule.AllowedMethods);
Console.WriteLine("AllowedHeaders:{0}", rule.AllowedHeaders);
Console.WriteLine("ExposeHeaders:{0}", rule.ExposeHeaders);
Console.WriteLine("MaxAgeSeconds:{0}", rule.MaxAgeSeconds);
}
提示:
- 完整代碼參考:GitHub
刪除CORS規則
用於關閉指定儲存空間對應的CORS並清空所有規則。
using Aliyun.OSS;
// 初始化OssClient
var client = new OssClient(endpoint, accessKeyId, accessKeySecret);
// 清空儲存空間的CORS規則
client.DeleteBucketCors(bucketName);
提示:
- 完整代碼參考:GitHub