跨域资源共享(CORS)允许web端的应用程序访问不属于本域的资源。OSS提供接口方便开发者控制跨域访问的权限。
设定CORS规则
通过setBucketCors 方法将指定的存储空间上设定一个跨域资源共享CORS的规则,如果原规则存在则覆盖原规则。具体的规则主要通过CORSRule类来进行参数设置。代码如下:
提示:
- 完整代码参考:GitHub
注意:
- 每个存储空间最多只能使用10条规则。
- AllowedOrigins和AllowedMethods都能够最多支持一个”*”通配符。”*”表示对于所有的域来源或者操作都满足。
- 而AllowedHeaders和ExposeHeaders不支持通配符。
提示:
- 完整代码参考:GitHub
提示:
- 完整代码参考:GitHub
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
阿里云对象存储服务(OSS)允许用户通过简单的API调用来管理跨域资源共享(CORS)规则,从而控制不同源之间的资源访问权限。您提供的代码示例分别展示了如何在OSS中设定、获取和删除CORS规则,下面是对这些操作的简要说明:
使用SetBucketCorsRequest
和CORSRule
类来定义允许的来源、HTTP方法、请求头等。例如,以下代码片段展示了如何设置一个CORS规则,允许来自http://www.a.com
的POST请求,并且允许所有响应头中的x-oss-test
被客户端访问。
var client = new OssClient(endpoint, accessKeyId, accessKeySecret);
var req = new SetBucketCorsRequest(bucketName);
var r1 = new CORSRule();
r1.AddAllowedOrigin("http://www.a.com");
r1.AddAllowedMethod("POST");
r1.AddAllowedHeader("*");
r1.AddExposeHeader("x-oss-test");
req.AddCORSRule(r1);
client.SetBucketCors(req);
通过调用GetBucketCors
方法,可以获取指定存储空间当前设置的所有CORS规则,并遍历打印出每个规则的详细信息,如允许的来源、方法、头信息等。
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);
}
如果需要关闭某个存储空间的CORS功能并清空所有已设置的规则,可以调用DeleteBucketCors
方法。
var client = new OssClient(endpoint, accessKeyId, accessKeySecret);
client.DeleteBucketCors(bucketName);
请注意,每次设置CORS规则时,如果该存储空间已有规则,则会覆盖原有规则;并且每个存储空间最多只能配置10条CORS规则。此外,关于AllowedHeaders
和ExposeHeaders
不支持通配符的限制也需留意。
以上就是使用阿里云OSS进行CORS规则管理的基本操作,确保在实际应用中正确配置以满足跨域访问的需求。