Mengonfigurasi aturan Berbagi Sumber Daya Lintas Asal (CORS) untuk sebuah bucket.
Catatan penggunaan
-
Desain nonaktif secara default
CORS dinonaktifkan secara default. Semua permintaan lintas asal tidak diizinkan.
-
Mekanisme penimpaan
Aturan CORS baru yang dikonfigurasi oleh PutBucketCors akan menimpa semua aturan CORS sebelumnya untuk bucket tersebut.
-
Penggunaan CORS dalam aplikasi
Anda harus memanggil PutBucketCors untuk mengonfigurasi aturan CORS sebelum menggunakan CORS dalam aplikasi.
Misalnya, untuk mengizinkan
example.commengakses OSS melalui browser menggunakanXMLHttpRequest, konfigurasikan aturan CORS dalam format XML menggunakan operasi ini. -
Pencocokan aturan CORS
Ketika OSS menerima permintaan lintas asal atau permintaan OPTIONS untuk sebuah bucket, OSS memeriksa aturan CORS yang telah dikonfigurasi secara berurutan dan mengembalikan header yang sesuai untuk kecocokan pertama. Jika tidak ada aturan yang cocok, OSS tidak menyertakan header CORS dalam respons.
Sebuah permintaan hanya cocok dengan aturan CORS jika semua kondisi berikut terpenuhi:
-
Origin permintaan sesuai dengan nilai
AllowedOrigindalam aturan tersebut. -
Metode permintaan atau nilai header
Access-Control-Request-Methodsesuai dengan nilaiAllowedMethod. -
Setiap header dalam
Access-Control-Request-Headerssesuai dengan nilaiAllowedHeader.
-
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 kebijakan RAM atau Kebijakan Bucket.
|
API |
Action |
Deskripsi |
|
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>the origin you want allow CORS request from</AllowedOrigin>
<AllowedOrigin>…</AllowedOrigin>
<AllowedMethod>HTTP method</AllowedMethod>
<AllowedMethod>…</AllowedMethod>
<AllowedHeader> headers that allowed browser to send</AllowedHeader>
<AllowedHeader>…</AllowedHeader>
<ExposeHeader> headers in response that can access from client app</ExposeHeader>
<ExposeHeader>…</ExposeHeader>
<MaxAgeSeconds>time to cache pre-fight response</MaxAgeSeconds>
</CORSRule>
<CORSRule>
...
</CORSRule>
...
</CORSConfiguration >
Elemen permintaan
|
Elemen |
Type |
Wajib |
Contoh |
Deskripsi |
|
CORSRule |
Container |
Ya |
N/A |
Container yang menyimpan aturan CORS. Maksimum: 20 aturan CORS per bucket. Ukuran maksimum badan permintaan: 16 KB. Node induk: CORSConfiguration |
|
AllowedOrigin |
String |
Ya |
* |
Origin permintaan lintas asal yang diizinkan. Tentukan beberapa elemen untuk beberapa origin. Karakter wildcard tanda bintang (*) mengizinkan semua origin. Hanya satu wildcard yang didukung per elemen. Node induk: CORSRule |
|
AllowedMethod |
Enumeration |
Ya |
GET |
Metode permintaan lintas asal yang diizinkan. Nilai yang valid: GET, PUT, DELETE, POST, dan HEAD. Node induk: CORSRule |
|
AllowedHeader |
String |
Tidak |
Authorization |
Header yang diizinkan dalam permintaan lintas asal, divalidasi terhadap Setiap header dalam 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 yang dapat diakses oleh aplikasi klien seperti JavaScript XMLHttpRequest. Penting
Karakter berikut tidak didukung:
Node induk: CORSRule |
|
MaxAgeSeconds |
Integer |
Tidak |
100 |
Waktu browser dapat menyimpan cache respons preflight. Satuan: detik. Hanya satu elemen MaxAgeSeconds yang diizinkan per aturan CORS. Node induk: CORSRule |
|
CORSConfiguration |
Container |
Ya |
N/A |
Container yang menyimpan konfigurasi CORS untuk bucket. Node induk: none |
|
ResponseVary |
Boolean |
Tidak |
false |
Apakah akan mengembalikan header Vary: Origin. Nilai yang valid:
Penting
Hanya berlaku ketika setidaknya satu aturan CORS telah dikonfigurasi. |
Operasi ini juga menggunakan Header HTTP umum.
Header respons
Respons PutBucketCors hanya berisi Header HTTP umum.
Contoh
-
Contoh permintaan
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 > -
Contoh respons
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
SDK OSS berikut mendukung PutBucketCors:
ossutil
Untuk informasi tentang perintah ossutil yang sesuai dengan operasi PutBucketCors, lihat put-bucket-cors.
Kode error
|
Kode error |
Kode status HTTP |
Deskripsi |
|
InvalidDigest |
400 |
Nilai Content-MD5 yang dihitung dari badan permintaan tidak sesuai dengan nilai Content-MD5 dalam header permintaan. |