Cross-origin resource sharing (CORS) - AWS SDK for JavaScript

Panduan API Referensi AWS SDK for JavaScript V3 menjelaskan secara rinci semua API operasi untuk AWS SDK for JavaScript versi 3 (V3).

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Cross-origin resource sharing (CORS)

Berbagi sumber daya lintas asal, atau CORS, adalah fitur keamanan browser web modern. Ini memungkinkan browser web untuk menegosiasikan domain mana yang dapat membuat permintaan situs web atau layanan eksternal.

CORS adalah pertimbangan penting ketika mengembangkan aplikasi browser dengan AWS SDK for JavaScript karena sebagian besar permintaan ke sumber daya dikirim ke domain eksternal, seperti titik akhir untuk layanan web. Jika JavaScript lingkungan Anda memberlakukan keamanan CORS, Anda harus mengonfigurasi CORS dengan layanan.

CORS menentukan apakah akan mengizinkan pembagian sumber daya dalam permintaan lintas asal berdasarkan hal berikut:

  • Domain spesifik yang membuat permintaan

  • Jenis permintaan HTTP yang dibuat (GET, PUT, POST, DELETE dan sebagainya)

Bagaimana CORS bekerja

Dalam kasus yang paling sederhana, skrip browser Anda membuat permintaan GET untuk sumber daya dari server di domain lain. Bergantung pada konfigurasi CORS server tersebut, jika permintaan berasal dari domain yang berwenang untuk mengirimkan permintaan GET, server lintas asal merespons dengan mengembalikan sumber daya yang diminta.

Jika domain yang meminta atau jenis permintaan HTTP tidak diotorisasi, permintaan ditolak. Namun, CORS memungkinkan untuk melakukan pra-penerbangan permintaan sebelum benar-benar mengirimkannya. Dalam hal ini, permintaan preflight dibuat di mana operasi permintaan OPTIONS akses dikirim. Jika konfigurasi CORS server lintas asal memberikan akses ke domain yang meminta, server mengirimkan kembali respons preflight yang mencantumkan semua jenis permintaan HTTP yang dapat dibuat oleh domain permintaan pada sumber daya yang diminta.

Alur proses untuk permintaan CORS

Apakah konfigurasi CORS diperlukan?

Bucket Amazon S3 memerlukan konfigurasi CORS sebelum Anda dapat melakukan operasi pada mereka. Di beberapa JavaScript lingkungan CORS mungkin tidak diberlakukan dan oleh karena itu mengonfigurasi CORS tidak diperlukan. Misalnya, jika Anda meng-host aplikasi dari bucket Amazon S3 dan mengakses sumber daya dari *.s3.amazonaws.com atau titik akhir tertentu lainnya, permintaan Anda tidak akan mengakses domain eksternal. Oleh karena itu, konfigurasi ini tidak memerlukan CORS. Dalam hal ini, CORS masih digunakan untuk layanan selain Amazon S3.

Konfigurasikan CORS untuk bucket Amazon S3

Anda dapat mengonfigurasi bucket Amazon S3 untuk menggunakan CORS di konsol Amazon S3.

Jika Anda mengonfigurasi CORS di Konsol Manajemen Layanan AWS Web, Anda harus menggunakan JSON untuk membuat konfigurasi CORS. Konsol Manajemen Layanan AWS Web baru hanya mendukung konfigurasi JSON CORS.

penting

Di Konsol Manajemen Layanan AWS Web yang baru, konfigurasi CORS harus JSON.

  1. Di Konsol Manajemen Layanan AWS Web, buka konsol Amazon S3, temukan bucket yang ingin Anda konfigurasi dan pilih kotak centang.

  2. Di panel yang terbuka, pilih Izin.

  3. Pada tab Izin, pilih Konfigurasi CORS.

  4. Masukkan konfigurasi CORS Anda di CORS Configuration Editor, lalu pilih Simpan.

Konfigurasi CORS adalah file XMLyang berisi serangkaian aturan dalam file. <CORSRule> Konfigurasi dapat memiliki hingga 100 aturan. Aturan didefinisikan oleh salah satu tag berikut:

  • <AllowedOrigin>— Menentukan asal domain yang Anda izinkan untuk membuat permintaan lintas domain.

  • <AllowedMethod>— Menentukan jenis permintaan yang Anda izinkan (GET, PUT, POST, DELETE, HEAD) dalam permintaan lintas domain.

  • <AllowedHeader>— Menentukan header diperbolehkan dalam permintaan preflight.

Misalnya konfigurasi, lihat Bagaimana cara mengonfigurasi CORS di bucket saya? di Panduan Pengguna Layanan Penyimpanan Sederhana Amazon.

Contoh konfigurasi CORS

Contoh konfigurasi CORS berikut memungkinkan pengguna untuk melihat, menambah, menghapus, atau memperbarui objek di dalam bucket dari domainexample.org. Namun, kami menyarankan Anda <AllowedOrigin> untuk menjangkau domain situs web Anda. Anda dapat menentukan "*" untuk mengizinkan asal apa pun.

penting

Pada konsol S3 baru, konfigurasi CORS harus JSON.

XML
<?xml version="1.0" encoding="UTF-8"?> <CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <CORSRule> <AllowedOrigin>https://example.org</AllowedOrigin> <AllowedMethod>HEAD</AllowedMethod> <AllowedMethod>GET</AllowedMethod> <AllowedMethod>PUT</AllowedMethod> <AllowedMethod>POST</AllowedMethod> <AllowedMethod>DELETE</AllowedMethod> <AllowedHeader>*</AllowedHeader> <ExposeHeader>ETag</ExposeHeader> <ExposeHeader>x-amz-meta-custom-header</ExposeHeader> </CORSRule> </CORSConfiguration>
JSON
[ { "AllowedHeaders": [ "*" ], "AllowedMethods": [ "HEAD", "GET", "PUT", "POST", "DELETE" ], "AllowedOrigins": [ "https://www.example.org" ], "ExposeHeaders": [ "ETag", "x-amz-meta-custom-header"] } ]

Konfigurasi ini tidak mengizinkan pengguna untuk melakukan tindakan pada bucket. Ini memungkinkan model keamanan browser untuk memungkinkan permintaan ke Amazon S3. Izin harus dikonfigurasi melalui izin bucket atau izin peran IAM.

Anda dapat menggunakan ExposeHeader untuk membiarkan SDK membaca header respons yang dikembalikan dari Amazon S3. Misalnya, membaca ETag header dari upload PUT atau multipart, Anda perlu menyertakan ExposeHeader tag dalam konfigurasi Anda, seperti yang ditunjukkan pada contoh sebelumnya. SDK hanya dapat mengakses header yang diekspos melalui konfigurasi CORS. Jika Anda mengatur metadata pada objek, nilai dikembalikan sebagai header dengan awalanx-amz-meta-, sepertix-amz-meta-my-custom-header, dan juga harus diekspos dengan cara yang sama.