Mengonfigurasi aturan berbagi sumber daya lintas asal (CORS) untuk sebuah bucket Object Storage Service (OSS).
Catatan penggunaan
Nonaktif secara Default
Secara default, CORS dinonaktifkan untuk sebuah bucket. Semua permintaan lintas asal tidak diizinkan.
Mekanisme Penimpaan
Jika Anda memanggil operasi PutBucketCors untuk mengonfigurasi aturan CORS baru pada bucket yang sudah memiliki aturan CORS, aturan yang ada akan ditimpa.
Penggunaan CORS dalam Aplikasi
Sebelum menggunakan CORS dalam aplikasi, Anda harus memanggil operasi PutBucketCors untuk mengonfigurasi aturan CORS dan mengaktifkan CORS.
Sebagai contoh, jika Anda ingin
example.commengakses OSS menggunakanXMLHttpRequestdari browser, Anda harus memanggil operasi ini untuk mengonfigurasi aturan CORS dalam format XML.Pencocokan Aturan CORS
Ketika OSS menerima permintaan lintas asal atau permintaan OPTIONS yang ditujukan ke sebuah bucket, OSS membaca aturan CORS yang dikonfigurasi untuk bucket tersebut dan mencoba mencocokkan aturan satu per satu. Jika ditemukan kecocokan pertama, OSS mengembalikan header yang sesuai. Jika permintaan gagal mencocokkan salah satu aturan CORS, OSS tidak menyertakan header CORS dalam respons.
OSS menganggap bahwa permintaan lintas asal atau permintaan OPTIONS cocok dengan aturan CORS hanya ketika permintaan memenuhi kondisi berikut:
Asal permintaan lintas asal cocok dengan nilai salah satu elemen
AllowedOrigindalam aturan CORS.Metode permintaan (seperti GET atau PUT) atau metode yang sesuai dengan header
Access-Control-Request-Methoddari permintaan OPTIONS harus cocok dengan salah satu itemAllowedMethod.Setiap header yang disertakan dalam
Access-Control-Request-Headersdalam permintaan OPTIONS harus cocok dengan nilai salah satu elemenAllowedHeaderdalam aturan CORS.
Izin
Secara default, Akun Alibaba Cloud memiliki izin penuh. Pengguna RAM atau Peran RAM di bawah Akun Alibaba Cloud tidak memiliki izin apa pun secara default. Akun Alibaba Cloud atau administrator akun harus memberikan izin operasi melalui RAM Policy atau Bucket Policy.
API | Aksi | Definisi |
PutBucketCors | oss:PutBucketCors | Mengonfigurasi aturan berbagi sumber daya lintas asal (CORS) untuk sebuah bucket. |
Sintaksis permintaan
PUT /?cors HTTP/1.1
Date: GMT Date
Content-Length: ContentLength
Content-Type: application/xml
Host: BucketName.oss-cn-hangzhou.aliyuncs.com
Authorization: SignatureValue
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration>
<CORSRule>
<AllowedOrigin>asal yang ingin Anda izinkan untuk permintaan CORS</AllowedOrigin>
<AllowedOrigin>…</AllowedOrigin>
<AllowedMethod>metode HTTP</AllowedMethod>
<AllowedMethod>…</AllowedMethod>
<AllowedHeader>header yang diizinkan untuk dikirim oleh browser</AllowedHeader>
<AllowedHeader>…</AllowedHeader>
<ExposeHeader>header dalam respons yang dapat diakses dari aplikasi klien</ExposeHeader>
<ExposeHeader>…</ExposeHeader>
<MaxAgeSeconds>waktu untuk menyimpan respons preflight</MaxAgeSeconds>
</CORSRule>
<CORSRule>
...
</CORSRule>
...
</CORSConfiguration >Elemen permintaan
Elemen | Tipe | Diperlukan | Contoh | Deskripsi |
CORSRule | Kontainer | Ya | N/A | Kontainer yang menyimpan aturan CORS. Anda dapat mengonfigurasi hingga 20 aturan CORS untuk sebuah bucket. Badan pesan XML dalam permintaan dapat berukuran hingga 16 KB. Node induk: CORSConfiguration |
AllowedOrigin | String | Ya | * | Asal dari mana permintaan lintas asal diizinkan. Anda dapat menggunakan beberapa elemen untuk menentukan beberapa asal yang diizinkan. Anda hanya dapat menggunakan satu tanda bintang (*) sebagai wildcard untuk AllowedOrigin. Jika Anda menyetel AllowedOrigin ke tanda bintang (*), semua permintaan lintas asal diizinkan. Node induk: CORSRule |
AllowedMethod | Enumerasi | Ya | GET | Metode permintaan lintas asal yang diizinkan. Nilai valid: GET, PUT, DELETE, POST, dan HEAD. Node induk: CORSRule |
AllowedHeader | String | Tidak | Authorization | Menentukan apakah header yang ditentukan oleh Setiap header yang ditentukan oleh Penting Anda hanya dapat menggunakan satu tanda bintang (*) sebagai wildcard untuk AllowedHeader. Karakter berikut tidak didukung:
Node induk: CORSRule |
ExposeHeader | String | Tidak | x-oss-test | Header respons untuk permintaan akses yang diizinkan dari aplikasi, seperti objek XMLHttpRequest dalam JavaScript. Penting Karakter berikut tidak didukung:
Node induk: CORSRule |
MaxAgeSeconds | Integer | Tidak | 100 | Periode waktu dalam mana browser dapat menyimpan respons terhadap permintaan preflight OPTIONS untuk sumber daya yang ditentukan. Unit: detik. Anda hanya dapat menentukan satu elemen MaxAgeSeconds dalam aturan CORS. Node induk: CORSRule |
CORSConfiguration | Kontainer | Ya | N/A | Kontainer yang menyimpan konfigurasi CORS untuk bucket. Node induk: none |
ResponseVary | Boolean | Tidak | false | Menentukan apakah akan mengembalikan header Vary: Origin. Nilai valid:
Penting Elemen ini valid hanya ketika setidaknya satu aturan CORS dikonfigurasi. |
Untuk informasi lebih lanjut tentang header permintaan umum dalam operasi ini, lihat Header HTTP Umum.
Header respons
Respons terhadap permintaan PutBucketCors hanya berisi header respons umum. Untuk informasi lebih lanjut, lihat Header HTTP Umum.
Contoh
Permintaan Sampel
PUT /?cors HTTP/1.1 Host: oss-example.oss-cn-hangzhou.aliyuncs.com Content-Length: 186 Date: Fri, 04 May 2012 03:21:12 GMT Authorization: OSS4-HMAC-SHA256 Credential=LTAI********************/20250417/cn-hangzhou/oss/aliyun_v4_request,AdditionalHeaders=content-length,Signature=a7c3554c729d71929e0b84489addee6b2e8d5cb48595adfc51868c299c0c218e <?xml version="1.0" encoding="UTF-8"?> <CORSConfiguration> <CORSRule> <AllowedOrigin>*</AllowedOrigin> <AllowedMethod>PUT</AllowedMethod> <AllowedMethod>GET</AllowedMethod> <AllowedHeader>Authorization</AllowedHeader> </CORSRule> <CORSRule> <AllowedOrigin>http://example.com</AllowedOrigin> <AllowedOrigin>http://example.net</AllowedOrigin> <AllowedMethod>GET</AllowedMethod> <AllowedHeader> Authorization</AllowedHeader> <ExposeHeader>x-oss-test</ExposeHeader> <ExposeHeader>x-oss-test1</ExposeHeader> <MaxAgeSeconds>100</MaxAgeSeconds> </CORSRule> <ResponseVary>false</ResponseVary> </CORSConfiguration >Respons Sampel
HTTP/1.1 200 OK x-oss-request-id: 50519080C4689A033D0***** Date: Fri, 04 May 2012 03:21:12 GMT Content-Length: 0 Connection: keep-alive Server: AliyunOSS x-oss-server-time: 94
SDK
Anda dapat menggunakan SDK OSS untuk bahasa pemrograman berikut untuk memanggil operasi PutBucketCors:
ossutil
Untuk informasi tentang perintah ossutil yang sesuai dengan operasi PutBucketCors, lihat put-bucket-cors.
Kode kesalahan
Kode kesalahan | Status HTTP | Deskripsi |
InvalidDigest | 400 | Nilai Content-MD5 yang dihitung oleh OSS berdasarkan badan permintaan berbeda dengan nilai Content-MD5 yang ditentukan dalam header permintaan. |