全部产品
弹性计算 会员服务 网络 安全 移动云 数加·大数据分析及展现 数加·大数据应用 管理与监控 云通信 阿里云办公 培训与认证 智能硬件 ET大脑
存储与CDN 数据库 域名与网站(万网) 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 开发者工具 解决方案 物联网 更多
对象存储 OSS

跨域资源共享

更新时间:2018-07-20 18:45:57

跨域资源共享(Cross-origin resource sharing,简称CORS)允许Web端的应用程序访问不属于本域的资源。OSS提供跨域资源共享接口,方便您控制跨域访问的权限。

更多关于跨域资源共享的介绍,请参见开发指南中的跨域访问。跨域资源共享的完整代码请参见GitHub

设置跨域资源共享(CORS)规则

以下代码用于设置指定存储空间的跨域资源共享规则:

  1. <?php
  2. if (is_file(__DIR__ . '/../autoload.php')) {
  3. require_once __DIR__ . '/../autoload.php';
  4. }
  5. if (is_file(__DIR__ . '/../vendor/autoload.php')) {
  6. require_once __DIR__ . '/../vendor/autoload.php';
  7. }
  8. use OSS\OssClient;
  9. use OSS\Core\OssException;
  10. use OSS\Model\CorsConfig;
  11. use OSS\Model\CorsRule;
  12. // 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。
  13. $accessKeyId = "<yourAccessKeyId>";
  14. $accessKeySecret = "<yourAccessKeySecret>";
  15. // Endpoint以杭州为例,其它Region请按实际情况填写。
  16. $endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
  17. $bucket= "<yourBucketName>";
  18. $corsConfig = new CorsConfig();
  19. $rule = new CorsRule();
  20. // AllowedHeaders和ExposeHeaders不支持通配符。
  21. $rule->addAllowedHeader("x-oss-header");
  22. // AllowedOlowedMethods最多支持一个星号(*)通配符。星号(*)表示允许所有的域来源或者操作。
  23. $rule->addAllowedOrigin("http://www.b.com");
  24. $rule->addAllowedMethod("POST");
  25. $rule->setMaxAgeSeconds(10);
  26. // 每个存储空间最多允许10条规则。
  27. $corsConfig->addRule($rule);
  28. try{
  29. $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
  30. // 已存在的规则将被覆盖。
  31. $ossClient->putBucketCors($bucket, $corsConfig);
  32. } catch(OssException $e) {
  33. printf(__FUNCTION__ . ": FAILED\n");
  34. printf($e->getMessage() . "\n");
  35. return;
  36. }
  37. print(__FUNCTION__ . ": OK" . "\n");

获取跨域资源共享规则

以下代码用于获取跨域资源共享规则:

  1. <?php
  2. if (is_file(__DIR__ . '/../autoload.php')) {
  3. require_once __DIR__ . '/../autoload.php';
  4. }
  5. if (is_file(__DIR__ . '/../vendor/autoload.php')) {
  6. require_once __DIR__ . '/../vendor/autoload.php';
  7. }
  8. use OSS\OssClient;
  9. use OSS\Core\OssException;
  10. /// 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。
  11. $accessKeyId = "<yourAccessKeyId>";
  12. $accessKeySecret = "<yourAccessKeySecret>";
  13. // Endpoint以杭州为例,其它Region请按实际情况填写。
  14. $endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
  15. $bucket= "<yourBucketName>";
  16. $corsConfig = null;
  17. try{
  18. $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
  19. $corsConfig = $ossClient->getBucketCors($bucket);
  20. } catch(OssException $e) {
  21. printf(__FUNCTION__ . ": FAILED\n");
  22. printf($e->getMessage() . "\n");
  23. return;
  24. }
  25. print(__FUNCTION__ . ": OK" . "\n");
  26. print($corsConfig->serializeToXml() . "\n");

删除跨域资源共享规则

以下代码用于删除指定存储空间的所有跨域资源共享规则:

  1. <?php
  2. if (is_file(__DIR__ . '/../autoload.php')) {
  3. require_once __DIR__ . '/../autoload.php';
  4. }
  5. if (is_file(__DIR__ . '/../vendor/autoload.php')) {
  6. require_once __DIR__ . '/../vendor/autoload.php';
  7. }
  8. use OSS\OssClient;
  9. use OSS\Core\OssException;
  10. // 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。
  11. $accessKeyId = "<yourAccessKeyId>";
  12. $accessKeySecret = "<yourAccessKeySecret>";
  13. // Endpoint以杭州为例,其它Region请按实际情况填写。
  14. $endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
  15. $bucket= "<yourBucketName>";
  16. try{
  17. $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
  18. $ossClient->deleteBucketCors($bucket);
  19. } catch(OssException $e) {
  20. printf(__FUNCTION__ . ": FAILED\n");
  21. printf($e->getMessage() . "\n");
  22. return;
  23. }
  24. print(__FUNCTION__ . ": OK" . "\n");
本文导读目录