全部產品
Search
文件中心

Object Storage Service:跨域資源共用

更新時間:Aug 30, 2018

跨域資源共用(Cross-origin resource sharing,簡稱CORS)允許Web端的應用程式訪問不屬於本域的資源。OSS提供跨域資源共用介面,方便您控制跨域訪問的許可權。

更多關於跨域資源共用的介紹,請參見開發指南中的跨域訪問。跨域資源共用的完整代碼請參見GitHub

設定跨域資源共用規則

以下代碼用於設定指定儲存空間的跨域資源共用規則:

  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");