edit-icon download-icon

Cross-Origin Resource Sharing

最終更新日: Oct 31, 2017

CORS を使って Web アプリケーションから他のオリジンのリソースにアクセスできます。OSS のインターフェイスを使用して、開発者はクロスオリジンアクセス権限を簡単に制御できます。

CORS ルールの設定

setBucketCORS メソッドを使用して、指定されたバケットに対して CORS ルールを設定できます。元のルールが存在する場合は上書きされます。通常、特定のルールのパラメーターは CORSRule クラスを通じて設定されます。コードは次のとおりです。

  1. using Aliyun.OSS;
  2. // Initialize OSSClient
  3. var client = new OssClient(endpoint, accessKeyId, accessKeySecret);
  4. var req = new SetBucketCorsRequest(bucketName);
  5. var r1 = new CORSRule();
  6. //Specify the allowed source of cross-origin requests
  7. r1.AddAllowedOrigin("http://www.a.com");
  8. //Specify the allowed cross-origin request methods (GET/PUT/DELETE/POST/HEAD)
  9. r1.AddAllowedMethod("POST");
  10. //Control whether the headers specified by Access-Control-Request-Headers in the OPTIONS' prefetch command are allowed.
  11. r1.AddAllowedHeader("*");
  12. //Specify the response headers users are allowed to access from the application
  13. r1.AddExposeHeader("x-oss-test");
  14. req.AddCORSRule(r1);
  15. client.SetBucketCors(req);

上記のソースコードは以下の場所で入手できます: GitHub

注意:

  • バケットごとに最大 10 のルールが許可されます。

  • AllowedOrigins と AllowedMethods ではそれぞれ 1 つの “*“ ワイルドカードのみ使用できます。”*“ は、すべてのオリジンまたはメソッドが許可されることを意味します。

  • AllowedHeaders と ExposeHeaders はワイルドカードをサポートしません。

CORS ルールの取得

GetBucketCORSRules メソッドを使用してバケットの CORS ルールを参照できます。コードは次のとおりです。

  1. using Aliyun.OSS;
  2. // Initialize an OSSClient
  3. var client = new OssClient(endpoint, accessKeyId, accessKeySecret);
  4. var rules = client.GetBucketCors(bucketName);
  5. foreach (var rule in rules)
  6. {
  7. Console.WriteLine("AllowedOrigins:{0}", rule.AllowedOrigins);
  8. Console.WriteLine("AllowedMethods:{0}", rule.AllowedMethods);
  9. Console.WriteLine("AllowedHeaders:{0}", rule.AllowedHeaders);
  10. Console.WriteLine("ExposeHeaders:{0}", rule.ExposeHeaders);
  11. Console.WriteLine("MaxAgeSeconds:{0}", rule.MaxAgeSeconds);
  12. }

上記のソースコードは以下の場所で入手できます: GitHub

CORS ルールの削除

これを使用して指定されたバケットの CORS を無効にし、すべてのルールをクリアします。

  1. using Aliyun.OSS;
  2. // Initialize an OSSClient
  3. var client = new OssClient(endpoint, accessKeyId, accessKeySecret);
  4. // Clear the CORS rules of a bucket
  5. client.DeleteBucketCors(bucketName);

上記のソースコードは以下の場所で入手できます: GitHub