Cross-Origin Resource Sharing (CORS) adalah standar berbasis Header HTTP yang memungkinkan pemilik resource menentukan origin mana yang diizinkan untuk membaca resource tersebut, dan diterapkan oleh browser di sisi klien. OSS mendukung standar CORS di tingkat bucket: operasi dalam kelompok ini mengelola konfigurasi CORS suatu bucket.
Cara Kerja CORS dengan OSS
Konfigurasikan CORS ketika JavaScript yang berjalan pada satu origin mengakses OSS dari origin lain, misalnya ketika halaman yang disajikan dari domain Anda sendiri mengunggah atau mengunduh objek langsung ke atau dari sebuah bucket. Konfigurasi CORS pada bucket tersebut menentukan origin mana yang dapat diterima oleh browser:
Perbandingan origin — Browser menganggap permintaan sebagai lintas origin jika skema, host, atau port dari URL target berbeda dari origin halaman yang mengirim permintaan tersebut.
Deklarasi oleh pemilik resource — Origin yang diizinkan dideklarasikan dalam konfigurasi CORS bucket tempat objek disimpan, bukan di klien yang mengirim permintaan.
Permintaan preflight — Sebelum mengirim permintaan lintas origin tertentu, browser mengirim permintaan
OPTIONSke OSS untuk memverifikasi apakah permintaan tersebut diizinkan. OSS memberikan tanggapan berdasarkan konfigurasi CORS bucket tersebut.Penerapan oleh browser — Browser membandingkan header respons CORS yang dikembalikan oleh OSS dengan origin halaman. Jika origin tersebut tidak diizinkan, browser memblokir halaman dari membaca respons tersebut.
CORS bukanlah mekanisme kontrol akses. Aturan CORS hanya menentukan origin mana yang boleh diizinkan browser untuk menerima respons, bukan siapa yang dapat mengakses data dalam bucket. Untuk mengontrol akses ke data Anda, gunakan fitur kontrol akses OSS.
Operasi
Mengelola Konfigurasi CORS Bucket
Operasi berikut digunakan untuk membuat, mengkueri, dan menghapus aturan CORS suatu bucket. Konfigurasikan aturan terlebih dahulu, lalu kueri atau hapus sesuai kebutuhan:
PutBucketCORS — Mengonfigurasi aturan CORS suatu bucket. Operasi ini merupakan titik masuk kelompok ini: panggil operasi ini untuk mendeklarasikan origin yang diizinkan mengirim permintaan lintas origin ke bucket tersebut.
GetBucketCORS — Mengkueri aturan CORS yang dikonfigurasi untuk suatu bucket. Panggil operasi ini untuk meninjau konfigurasi saat ini sebelum mengubah atau menghapusnya.
DeleteBucketCORS — Menghapus konfigurasi CORS dari suatu bucket.
DeleteBucketCORS menghapus aturan CORS bucket tersebut, sehingga browser tidak lagi menerima respons yang mengizinkan permintaan lintas origin ke bucket tersebut. Panggil GetBucketCORS terlebih dahulu dan simpan konfigurasi yang dikembalikan agar Anda dapat memulihkannya kembali dengan PutBucketCORS.
Menangani Permintaan Preflight Browser
OSS merespons permintaan preflight yang dikirim browser sebelum permintaan lintas origin. Proses ini dikendalikan oleh browser, bukan oleh tugas konfigurasi dalam kode aplikasi Anda:
OptionObject — Menangani permintaan preflight
OPTIONSuntuk suatu objek. Browser mengirim permintaan ini secara otomatis, sehingga kode aplikasi biasanya tidak memanggil operasi ini secara langsung.
Jika browser memblokir permintaan lintas origin ke suatu bucket, kueri aturan saat ini dengan GetBucketCORS dan bandingkan dengan origin, metode, serta header dari permintaan yang dikirim browser.