全部产品
对象存储 OSS

跨域资源共享

更新时间:2017-06-07 13:26:11   分享:   

跨域资源共享(CORS)允许web端的应用程序访问不属于本域的资源。OSS提供接口方便开发者控制跨域访问的权限。更多关于跨域资源共享的内容请参考 跨域访问

设定CORS规则

通过setBucketCors 方法将指定的存储空间上设定一个跨域资源共享CORS的规则,如果原规则存在则覆盖原规则。具体的规则主要通过CORSRule类来进行参数设置。代码如下:

  1. SetBucketCORSRequest request = new SetBucketCORSRequest();
  2. request.setBucketName(bucketName);
  3. //CORS规则的容器,每个bucket最多允许10条规则
  4. ArrayList<CORSRule> putCorsRules = new ArrayList<CORSRule>();
  5. CORSRule corRule = new CORSRule();
  6. ArrayList<String> allowedOrigin = new ArrayList<String>();
  7. //指定允许跨域请求的来源
  8. allowedOrigin.add( "http://www.b.com");
  9. ArrayList<String> allowedMethod = new ArrayList<String>();
  10. //指定允许的跨域请求方法(GET/PUT/DELETE/POST/HEAD)
  11. allowedMethod.add("GET");
  12. ArrayList<String> allowedHeader = new ArrayList<String>();
  13. //控制在OPTIONS预取指令中Access-Control-Request-Headers头中指定的header是否允许。
  14. allowedHeader.add("x-oss-test");
  15. ArrayList<String> exposedHeader = new ArrayList<String>();
  16. //指定允许用户从应用程序中访问的响应头
  17. exposedHeader.add("x-oss-test1");
  18. corRule.setAllowedMethods(allowedMethod);
  19. corRule.setAllowedOrigins(allowedOrigin);
  20. corRule.setAllowedHeaders(allowedHeader);
  21. corRule.setExposeHeaders(exposedHeader);
  22. //指定浏览器对特定资源的预取(OPTIONS)请求返回结果的缓存时间,单位为秒。
  23. corRule.setMaxAgeSeconds(10);
  24. //最多允许10条规则
  25. putCorsRules.add(corRule);
  26. request.setCorsRules(putCorsRules);
  27. oss.setBucketCORS(request);

提示:

  • 每个存储空间最多只能使用10条规则。
  • AllowedOrigins和AllowedMethods都能够最多支持一个”*”通配符。”*”表示对于所有的域来源或者操作都满足。
  • 而AllowedHeaders和ExposeHeaders不支持通配符。

获取CORS规则

我们可以参考存储空间的CORS规则,通过GetBucketCors方法。代码如下:

  1. ArrayList<CORSRule> corsRules;
  2. //获得CORS规则列表
  3. corsRules = (ArrayList<CORSRule>) oss.getBucketCORSRules(bucketName);
  4. for (CORSRule rule : corsRules) {
  5. for (String allowedOrigin1 : rule.getAllowedOrigins()) {
  6. //获得允许跨域请求源
  7. System.out.println(allowedOrigin1);
  8. }
  9. for (String allowedMethod1 : rule.getAllowedMethods()) {
  10. //获得允许跨域请求方法
  11. System.out.println(allowedMethod1);
  12. }
  13. if (rule.getAllowedHeaders().size() > 0){
  14. for (String allowedHeader1 : rule.getAllowedHeaders()) {
  15. //获得允许头部列表
  16. System.out.println(allowedHeader1);
  17. }
  18. }
  19. if (rule.getExposeHeaders().size() > 0) {
  20. for (String exposeHeader : rule.getExposeHeaders()) {
  21. //获得允许头部
  22. System.out.println(exposeHeader);
  23. }
  24. }
  25. if ( null != rule.getMaxAgeSeconds()) {
  26. System.out.println(rule.getMaxAgeSeconds());
  27. }
  28. }

删除CORS规则

用于关闭指定存储空间对应的CORS并清空所有规则。

  1. // 清空bucket的CORS规则
  2. oss.deleteBucketCORSRules(bucketName);
本文导读目录
本文导读目录
以上内容是否对您有帮助?