全部产品
Search
文档中心

Object Storage Service:Berbagi sumber daya lintas asal (CORS) (C# SDK V1)

更新时间:Nov 29, 2025

Kebijakan asal sama (same-origin policy) pada browser menolak permintaan lintas asal saat Anda bertukar data atau berbagi sumber daya antar domain yang berbeda. Untuk mengatasi masalah ini, Anda dapat mengonfigurasi aturan Berbagi Sumber Daya Lintas Asal (CORS) yang mengizinkan akses dari nama domain, metode, dan header permintaan tertentu.

Catatan penggunaan

  • Topik ini menggunakan titik akhir publik wilayah China (Hangzhou). Jika Anda ingin mengakses OSS dari layanan Alibaba Cloud lainnya dalam wilayah yang sama dengan OSS, gunakan titik akhir internal. Untuk informasi selengkapnya mengenai wilayah dan titik akhir OSS, lihat Wilayah dan titik akhir.

  • Topik ini membuat instans OSSClient menggunakan titik akhir OSS. Jika Anda ingin membuat instans OSSClient menggunakan nama domain kustom atau Security Token Service (STS), lihat Inisialisasi.

  • Untuk mengatur aturan CORS, Anda harus memiliki izin oss:PutBucketCors. Untuk mengambil aturan CORS, Anda harus memiliki izin oss:GetBucketCors. Untuk menghapus aturan CORS, Anda harus memiliki izin oss:DeleteBucketCors. Untuk informasi selengkapnya, lihat Melampirkan kebijakan kustom ke RAM user.

Konfigurasi aturan CORS

Kode berikut menunjukkan cara mengatur aturan CORS untuk bucket tertentu:

using Aliyun.OSS;
using Aliyun.OSS.Common;

// Tetapkan endpoint ke titik akhir wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), tetapkan endpoint ke https://oss-cn-hangzhou.aliyuncs.com.
var endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
var accessKeyId = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_ID");
var accessKeySecret = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_SECRET");
// Tentukan nama bucket. Contoh: examplebucket.
var bucketName = "examplebucket";
// Tetapkan region ke wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), tetapkan region ke cn-hangzhou.
const string region = "cn-hangzhou";

// Buat instans ClientConfiguration dan ubah parameter default sesuai kebutuhan.
var conf = new ClientConfiguration();

// Gunakan Signature Version 4.
conf.SignatureVersion = SignatureVersion.V4;

// Buat instans OssClient.
var client = new OssClient(endpoint, accessKeyId, accessKeySecret, conf);
client.SetRegion(region);
try
{
    var request = new SetBucketCorsRequest(bucketName);
    var rule1 = new CORSRule();
    // Tentukan origin yang diizinkan untuk mengirim permintaan lintas asal.
    rule1.AddAllowedOrigin("http://example.com");
    // Tentukan metode yang diizinkan untuk permintaan lintas asal, seperti GET, PUT, DELETE, POST, dan HEAD.
    rule1.AddAllowedMethod("POST");
    // Karakter wildcard tidak didukung untuk AllowedHeaders dan ExposeHeaders.
    rule1.AddAllowedHeader("*");
    // Tentukan header respons yang dapat diakses oleh aplikasi.
    rule1.AddExposeHeader("x-oss-test");
    // Maksimal 10 aturan diperbolehkan.
    request.AddCORSRule(rule1);
    var rule2 = new CORSRule();
    // AllowedOrigins dan AllowedMethods mendukung paling banyak satu karakter wildcard asterisk (*). Asterisk (*) menunjukkan bahwa permintaan dari semua domain asal atau semua metode diizinkan.
    rule2.AddAllowedOrigin("http://example.net");
    rule2.AddAllowedMethod("GET");
    // Tentukan apakah header yang ditentukan oleh Access-Control-Request-Headers dalam permintaan preflight OPTIONS diizinkan.
    rule2.AddExposeHeader("x-oss-test2");
    // Tentukan durasi cache untuk respons terhadap permintaan preflight OPTIONS untuk sumber daya tertentu. Satuan: detik.
    rule2.MaxAgeSeconds = 100;
    request.AddCORSRule(rule2);
    // Konfigurasikan aturan CORS.
    client.SetBucketCors(request);
    Console.WriteLine("Set bucket:{0} Cors succeeded ", bucketName);
}
catch (OssException ex)
{
    Console.WriteLine("Failed with error info: {0}; Error info: {1}. \nRequestID:{2}\tHostID:{3}",
        ex.ErrorCode, ex.Message, ex.RequestId, ex.HostId);
}
catch (Exception ex)
{
    Console.WriteLine("Failed with error info: {0}", ex.Message);
}

Kueri aturan CORS

Untuk kode contoh lengkap guna mengkueri aturan CORS, lihat GitHub.

Kode berikut menunjukkan cara mengambil aturan CORS dari bucket tertentu:

using Aliyun.OSS;
using Aliyun.OSS.Common;
// Tetapkan endpoint ke titik akhir wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), tetapkan endpoint ke https://oss-cn-hangzhou.aliyuncs.com.
var endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
var accessKeyId = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_ID");
var accessKeySecret = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_SECRET");
// Tentukan nama bucket. Contoh: examplebucket.
var bucketName = "examplebucket";
// Tetapkan region ke wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), tetapkan region ke cn-hangzhou.
const string region = "cn-hangzhou";

// Buat instans ClientConfiguration dan ubah parameter default sesuai kebutuhan.
var conf = new ClientConfiguration();

// Gunakan Signature Version 4.
conf.SignatureVersion = SignatureVersion.V4;

// Buat instans OssClient.
var client = new OssClient(endpoint, accessKeyId, accessKeySecret, conf);
client.SetRegion(region);
try
{
    // Kueri aturan CORS.
    var result = client.GetBucketCors(bucketName);
    Console.WriteLine("Get bucket:{0} Cors succeeded ", bucketName);
    foreach (var rule in result)
    {
        foreach (var origin in rule.AllowedOrigins)
        {
            Console.WriteLine("Allowed origin:{0}", origin);
        }
    }
}
catch (OssException ex)
{
    Console.WriteLine("Failed with error info: {0}; Error info: {1}. \nRequestID:{2}\tHostID:{3}",
        ex.ErrorCode, ex.Message, ex.RequestId, ex.HostId);
}
catch (Exception ex)
{
    Console.WriteLine("Failed with error info: {0}", ex.Message);
}

Hapus aturan CORS

Kode berikut menunjukkan cara menghapus semua aturan CORS dari bucket tertentu:

using Aliyun.OSS;
using Aliyun.OSS.Common;
// Tetapkan endpoint ke titik akhir wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), tetapkan endpoint ke https://oss-cn-hangzhou.aliyuncs.com.
var endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
var accessKeyId = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_ID");
var accessKeySecret = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_SECRET");
// Tentukan nama bucket. Contoh: examplebucket.
var bucketName = "examplebucket";
// Tetapkan region ke wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), tetapkan region ke cn-hangzhou.
const string region = "cn-hangzhou";

// Buat instans ClientConfiguration dan ubah parameter default sesuai kebutuhan.
var conf = new ClientConfiguration();

// Gunakan Signature Version 4.
conf.SignatureVersion = SignatureVersion.V4;

// Buat instans OssClient.
var client = new OssClient(endpoint, accessKeyId, accessKeySecret, conf);
client.SetRegion(region);
try
{
    // Hapus aturan CORS.
    client.DeleteBucketCors(bucketName);
    Console.WriteLine("Delete bucket:{0} Cors succeeded ", bucketName);
}
catch (OssException ex)
{
    Console.WriteLine("Failed with error info: {0} ; Error info: {1}. \nRequestID:{2}\tHostID:{3}",
        ex.ErrorCode, ex.Message, ex.RequestId, ex.HostId);
}
catch (Exception ex)
{
    Console.WriteLine("Failed with error info: {0}", ex.Message);
}

Referensi

  • Untuk kode contoh lengkap mengenai CORS, lihat Contoh GitHub.

  • Untuk informasi selengkapnya mengenai operasi API untuk mengatur aturan CORS, lihat PutBucketCors.

  • Untuk informasi selengkapnya mengenai operasi API untuk mengambil aturan CORS, lihat GetBucketCors.

  • Untuk informasi selengkapnya mengenai operasi API untuk menghapus aturan CORS, lihat DeleteBucketCors.