Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Penyelesaian masalah CORS
Topik berikut dapat membantu Anda memecahkan beberapa masalah CORS umum yang terkait dengan S3.
Topik
403 Kesalahan terlarang: CORS tidak diaktifkan untuk bucket ini
Kes 403 Forbidden alahan berikut terjadi ketika permintaan lintas asal dikirim ke Amazon S3 tetapi CORS tidak dikonfigurasi pada bucket S3 Anda.
Kesalahan: HTTP/1.1 403 Respon CORS Terlarang: CORS tidak diaktifkan untuk bucket ini.
Konfigurasi CORS adalah dokumen atau kebijakan dengan aturan yang mengidentifikasi asal yang akan Anda izinkan untuk mengakses bucket Anda, operasi (metode HTTP) yang akan Anda dukung untuk setiap asal, dan informasi spesifik operasi lainnya. Lihat cara mengonfigurasi CORS di S3 menggunakan konsol Amazon S3, AWS SDK, dan REST API. Untuk informasi selengkapnya tentang CORS dan contoh konfigurasi CORS, lihat Elemen CORS.
403 Kesalahan terlarang: Permintaan CORS ini tidak diizinkan
Kes 403 Forbidden alahan berikut diterima ketika aturan CORS dalam konfigurasi CORS Anda tidak cocok dengan data dalam permintaan Anda.
Kesalahan: HTTP/1.1 403 Respons CORS Terlarang: Permintaan CORS ini tidak diizinkan.
Akibatnya, 403 Forbidden kesalahan ini dapat terjadi karena berbagai alasan:
-
Asal tidak diperbolehkan.
-
Metode tidak diperbolehkan.
-
Header yang diminta tidak diperbolehkan.
Untuk setiap permintaan yang diterima Amazon S3, Anda harus memiliki aturan CORS dalam konfigurasi CORS yang cocok dengan data dalam permintaan Anda.
Asal tidak diperbolehkan
OriginHeader dalam permintaan CORS ke bucket Anda harus sesuai dengan asal dalam AllowedOrigins elemen dalam konfigurasi CORS Anda. Karakter wildcard ("*") dalam AllowedOrigins elemen akan cocok dengan semua metode HTTP. Untuk informasi selengkapnya tentang cara memperbarui AllowedOrigins elemen, lihat Mengon figurasi berbagi sumber daya lintas asal (CORS).
Misalnya, jika hanya http://www.example1.com domain yang disertakan dalam AllowedOrigins elemen, maka permintaan CORS yang dikirim dari http://www.example2.com domain akan menerima 403
Forbidden kesalahan.
Contoh berikut menunjukkan bagian dari konfigurasi CORS yang mencakup http://www.example1.com domain dalam AllowedOrigins elemen.
"AllowedOrigins":[ "http://www.example1.com" ]
Agar permintaan CORS yang dikirim dari http://www.example2.com domain berhasil, http://www.example2.com domain harus disertakan dalam AllowedOrigins elemen konfigurasi CORS.
"AllowedOrigins":[ "http://www.example1.com" "http://www.example2.com" ]
Metode tidak diperbolehkan
Metode HTTP yang ditentukan dalam permintaan CORS Access-Control-Request-Method ke bucket Anda harus cocok dengan metode atau metode yang tercantum dalam AllowedMethods elemen dalam konfigurasi CORS Anda. Karakter wildcard ("*") di AllowedMethods akan cocok dengan semua metode HTTP. Untuk informasi selengkapnya tentang cara memperbarui AllowedOrigins elemen, lihat Mengon figurasi berbagi sumber daya lintas asal (CORS).
Dalam konfigurasi CORS, Anda dapat menentukan metode berikut dalam AllowedMethods elemen:
-
GET -
PUT POST-
DELETE -
HEAD
Contoh berikut menunjukkan bagian dari konfigurasi CORS yang mencakup GET metode dalam AllowedMethods elemen. Hanya permintaan termasuk GET metode yang akan berhasil.
"AllowedMethods":[ "GET" ]
Jika metode HTTP (misalnya,PUT) digunakan dalam permintaan CORS atau disertakan dalam permintaan CORS pra-penerbangan ke bucket Anda tetapi metode tersebut tidak ada dalam konfigurasi CORS Anda, permintaan akan mengakibatkan kesalahan. 403 Forbidden Untuk mengizinkan permintaan CORS atau permintaan pra-penerbangan CORS ini, PUT metode harus ditambahkan ke konfigurasi CORS Anda.
"AllowedMethods":[ "GET" "PUT" ]
Header yang diminta tidak diperbolehkan
Header yang tercantum di Access-Control-Request-Headers header dalam permintaan pra-penerbangan harus cocok dengan header dalam AllowedHeaders elemen dalam konfigurasi CORS Anda. Untuk daftar header umum yang dapat digunakan dalam permintaan ke Amazon S3, lihat Header Per mintaan Umum. Untuk informasi selengkapnya tentang cara memperbarui AllowedHeaders elemen, lihat Mengon figurasi berbagi sumber daya lintas asal (CORS).
Contoh berikut menunjukkan bagian dari konfigurasi CORS yang mencakup Authorization header dalam AllowedHeaders elemen. Hanya permintaan untuk Authorization header yang akan berhasil.
"AllowedHeaders": [ "Authorization" ]
Jika header (misalnya Content-MD5 disertakan dalam permintaan CORS tetapi header tidak ada dalam konfigurasi CORS Anda, permintaan akan menghasilkan 403 Forbidden kesalahan. Untuk mengizinkan permintaan CORS ini, Content-MD5 header harus ditambahkan ke konfigurasi CORS Anda. Jika Anda ingin meneruskan keduanya Authorization dan Content-MD5 header dalam permintaan CORS ke bucket Anda, konfirmasikan bahwa kedua header disertakan dalam AllowedHeaders elemen dalam konfigurasi CORS Anda.
"AllowedHeaders": [ "Authorization" "Content-MD5" ]
Header tidak ditemukan dalam respons CORS
ExposeHeadersElemen dalam konfigurasi CORS mengidentifikasi header respons mana yang ingin Anda buat dapat diakses oleh skrip dan aplikasi yang berjalan di browser, sebagai respons terhadap permintaan CORS.
Jika objek yang disimpan di bucket S3 memiliki metadata yang ditentukan pengguna (misalnya,x-amz-meta-custom-header) bersama dengan data respons, header kustom ini dapat berisi metadata tambahan atau informasi yang ingin Anda akses dari kode sisi klien. JavaScript Namun, secara default, browser memblokir akses ke header khusus untuk alasan keamanan. Untuk mengizinkan sisi klien Anda JavaScript mengakses header khusus, Anda perlu menyertakan header dalam konfigurasi CORS Anda.
Dalam contoh di bawah ini, x-amz-meta-custom-header1 header disertakan dalam ExposeHeaders elemen. x-amz-meta-custom-header2Tidak termasuk dalam ExposeHeaders elemen dan hilang dari konfigurasi CORS. Dalam tanggapan, hanya nilai yang termasuk dalam ExposeHeaders elemen yang akan dikembalikan. Jika permintaan menyertakan x-amz-meta-custom-header2 header di Access-Control-Expose-Headers header, respons akan tetap mengembalikan a200 OK. Namun, hanya header yang diizinkan, Misalnya x-amz-meta-custom-header akan dikembalikan dan ditampilkan dalam respons.
"ExposeHeaders": [ "x-amz-meta-custom-header1" ]
Untuk memastikan semua header muncul dalam respons, tambahkan semua header yang diizinkan ke ExposeHeaders elemen dalam konfigurasi CORS Anda seperti yang ditunjukkan di bawah ini.
"ExposeHeaders": [ "x-amz-meta-custom-header1", "x-amz-meta-custom-header2" ]
Pertimbangan CORS pada integrasi proxy S3
Jika Anda mengalami kesalahan dan telah memeriksa konfigurasi CORS pada bucket S3 Anda, dan permintaan lintas asal dikirim ke proxy seperti AWS CloudFront, coba yang berikut ini:
-
Konfigurasikan pengaturan untuk mengizinkan
OPTIONSmetode untuk permintaan HTTP. -
Konfigurasikan proxy untuk meneruskan header berikut:
Origin,Access-Control-Request-Headers, danAccess-Control-Request-Method. -
Konfigurasikan pengaturan proxy untuk menyertakan header asal dalam kunci cache-nya. Ini penting karena proxy caching yang tidak menyertakan header asal dalam kunci cache mereka dapat menyajikan respons cache yang tidak menyertakan header CORS yang sesuai untuk asal yang berbeda.
Beberapa proxy menyediakan fitur yang telah ditentukan sebelumnya untuk permintaan CORS. Misalnya, di CloudFront, Anda dapat mengonfigurasi kebijakan yang menyertakan header
yang mengaktifkan permintaan berbagi sumber daya lintas asal (CORS) saat asalnya adalah bucket Amazon S3.
Kebijakan ini memiliki setelan berikut:
-
Header yang disertakan dalam permintaan asal:
OriginAccess-Control-Request-HeadersAccess-Control-Request-Method -
Cookie yang disertakan dalam permintaan asal: Tidak ada
-
String kueri yang disertakan dalam permintaan asal: Tidak ada
Untuk informasi selengkapnya, lihat Mengon trol permintaan asal dengan kebijakan dan Menggunakan kebijakan permintaan asal terkelola di Panduan CloudFront Pengembang.