跨域资源共享
跨域资源共享(Cross-origin resource sharing,简称CORS)允许Web端的应用程序访问不属于本域的资源。OSS提供跨域资源共享接口,方便您控制跨域访问的权限。
更多关于跨域资源共享的介绍,请参见开发指南中的设置跨域访问和API参考中PutBucketcors。
跨域资源共享的完整代码请参见GitHub。
设置跨域资源共享规则
设置跨域资源共享规则的完整代码请参见GitHub。
以下代码用于设置指定存储空间的跨域资源共享规则:
using Aliyun.OSS;
using Aliyun.OSS.Common;
var endpoint = "<yourEndpoint>";
var accessKeyId = "<yourAccessKeyId>";
var accessKeySecret = "<yourAccessKeySecret>";
var bucketName = "<yourBucketName>";
// 创建OSSClient实例。
var client = new OssClient(endpoint, accessKeyId, accessKeySecret);
try
{
var request = new SetBucketCorsRequest(bucketName);
var rule1 = new CORSRule();
// 指定允许跨域请求的来源。
rule1.AddAllowedOrigin("http://www.a.com");
// 指定允许的跨域请求方法(GET/PUT/DELETE/POST/HEAD)。
rule1.AddAllowedMethod("POST");
// AllowedHeaders和ExposeHeaders不支持通配符。
rule1.AddAllowedHeader("*");
// 指定允许用户从应用程序中访问的响应头。
rule1.AddExposeHeader("x-oss-test");
// 最多允许10条规则。
request.AddCORSRule(rule1);
var rule2 = new CORSRule();
// AllowedOrigins和AllowedMethods最多支持一个星号(*)通配符。星号(*)表示允许所有的域来源或者操作。
rule2.AddAllowedOrigin("http://www.b.com");
rule2.AddAllowedMethod("GET");
// 是否允许预取指令(OPTIONS)中Access-Control-Request-Headers头中指定的Header。
rule2.AddExposeHeader("x-oss-test2");
// 指定浏览器对特定资源的预取(OPTIONS)请求返回结果的缓存时间,单位为秒。
rule2.MaxAgeSeconds = 100;
request.AddCORSRule(rule2);
// 设置跨域资源共享规则。
client.SetBucketCors(request);
Console.WriteLine("Set bucket:{0} Cors succeeded ", bucketName);
}
catch (OssException ex)
{
Console.WriteLine("Failed with error info: {0}; Error info: {1}. \nRequestID:{2}\tHostID:{3}",
ex.ErrorCode, ex.Message, ex.RequestId, ex.HostId);
}
catch (Exception ex)
{
Console.WriteLine("Failed with error info: {0}", ex.Message);
}
获取跨域资源共享规则
获取跨域资源共享规则完整代码请参见GitHub。
以下代码用于获取跨域资源共享规则:
using Aliyun.OSS;
using Aliyun.OSS.Common;
var endpoint = "<yourEndpoint>";
var accessKeyId = "<yourAccessKeyId>";
var accessKeySecret = "<yourAccessKeySecret>";
var bucketName = "<yourBucketName>";
// 创建OSSClient实例。
var client = new OssClient(endpoint, accessKeyId, accessKeySecret);
try
{
// 获取跨域资源共享规则。
var result = client.GetBucketCors(bucketName);
Console.WriteLine("Get bucket:{0} Cors succeeded ", bucketName);
foreach (var rule in result)
{
foreach (var origin in rule.AllowedOrigins)
{
Console.WriteLine("Allowed origin:{0}", origin);
}
}
}
catch (OssException ex)
{
Console.WriteLine("Failed with error info: {0}; Error info: {1}. \nRequestID:{2}\tHostID:{3}",
ex.ErrorCode, ex.Message, ex.RequestId, ex.HostId);
}
catch (Exception ex)
{
Console.WriteLine("Failed with error info: {0}", ex.Message);
}
删除跨域资源共享规则
删除跨域资源共享规则的完整代码请参见GitHub。
以下代码用于删除指定存储空间的所有跨域资源共享规则:
using Aliyun.OSS;
using Aliyun.OSS.Common;
var endpoint = "<yourEndpoint>";
var accessKeyId = "<yourAccessKeyId>";
var accessKeySecret = "<yourAccessKeySecret>";
var bucketName = "<yourBucketName>";
// 创建OSSClient实例。
var client = new OssClient(endpoint, accessKeyId, accessKeySecret);
try
{
// 删除跨域资源共享规则。
client.DeleteBucketCors(bucketName);
Console.WriteLine("Delete bucket:{0} Cors succeeded ", bucketName);
}
catch (OssException ex)
{
Console.WriteLine("Failed with error info: {0} ; Error info: {1}. \nRequestID:{2}\tHostID:{3}",
ex.ErrorCode, ex.Message, ex.RequestId, ex.HostId);
}
catch (Exception ex)
{
Console.WriteLine("Failed with error info: {0}", ex.Message);
}
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。
评论