全部产品
存储与CDN 数据库 安全 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 开发者工具 解决方案 物联网
对象存储 OSS

跨域资源共享

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

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

更多关于跨域资源共享的内容请参考 跨域访问

提示:

  • 以下场景的完整代码请参见:GitHub

设定CORS规则

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

您可以通过OssClient::putBucketCors设置存储空间的CORS规则:

  1. <?php
  2. /**
  3. * 设置bucket的cors配置
  4. *
  5. * @param OssClient $ossClient OSSClient实例
  6. * @param string $bucket 存储空间名称
  7. * @return null
  8. */
  9. function putBucketCors($ossClient, $bucket)
  10. {
  11. $corsConfig = new CorsConfig();
  12. $rule = new CorsRule();
  13. $rule->addAllowedHeader("x-oss-header");
  14. $rule->addAllowedOrigin("http://www.b.com");
  15. $rule->addAllowedMethod("POST");
  16. $rule->setMaxAgeSeconds(10);
  17. $corsConfig->addRule($rule);
  18. try{
  19. $ossClient->putBucketCors($bucket, $corsConfig);
  20. } catch(OssException $e) {
  21. printf(__FUNCTION__ . ": FAILED\n");
  22. printf($e->getMessage() . "\n");
  23. return;
  24. }
  25. print(__FUNCTION__ . ": OK" . "\n");
  26. }

注意

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

获取CORS规则

您可以通过OssClient::getBucketCors获取存储空间上设置的CORS规则:

  1. <?php
  2. /**
  3. * 获取并打印bucket的cors配置
  4. *
  5. * @param OssClient $ossClient OSSClient实例
  6. * @param string $bucket bucket名字
  7. * @return null
  8. */
  9. function getBucketCors($ossClient, $bucket)
  10. {
  11. $corsConfig = null;
  12. try{
  13. $corsConfig = $ossClient->getBucketCors($bucket);
  14. } catch(OssException $e) {
  15. printf(__FUNCTION__ . ": FAILED\n");
  16. printf($e->getMessage() . "\n");
  17. return;
  18. }
  19. print(__FUNCTION__ . ": OK" . "\n");
  20. print($corsConfig->serializeToXml() . "\n");
  21. }

删除CORS规则

您可以通过OssClient::deleteBucketCors关闭并清除存储空间上所有的CORS规则。

  1. <?php
  2. /**
  3. * 删除bucket的所有的cors配置
  4. *
  5. * @param OssClient $ossClient OSSClient实例
  6. * @param string $bucket bucket名字
  7. * @return null
  8. */
  9. function deleteBucketCors($ossClient, $bucket)
  10. {
  11. try{
  12. $ossClient->deleteBucketCors($bucket);
  13. } catch(OssException $e) {
  14. printf(__FUNCTION__ . ": FAILED\n");
  15. printf($e->getMessage() . "\n");
  16. return;
  17. }
  18. print(__FUNCTION__ . ": OK" . "\n");
  19. }
本文导读目录