Pemecahan Masalah CORS - Amazon Simple Storage Service

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

Pemecahan Masalah CORS

Topik berikut dapat membantu Anda memecahkan masalah beberapa CORS masalah umum yang terkait dengan S3.

403 Kesalahan terlarang: tidak CORS diaktifkan untuk ember ini

403 ForbiddenKesalahan berikut terjadi ketika permintaan lintas asal dikirim ke Amazon S3 CORS tetapi tidak dikonfigurasi pada bucket S3 Anda.

Error: HTTP/1.1 403 Forbidden CORS Response: tidak CORS diaktifkan untuk bucket ini.

CORSKonfigurasi adalah dokumen atau kebijakan dengan aturan yang mengidentifikasi asal yang akan Anda izinkan untuk mengakses bucket, operasi (HTTPmetode) yang akan Anda dukung untuk setiap asal, dan informasi spesifik operasi lainnya. Lihat cara mengonfigurasi CORS di S3 dengan menggunakan konsol Amazon S3 AWS SDKs,, dan. REST API Untuk informasi selengkapnya tentang CORS dan contoh CORS konfigurasi, lihat Elemen dari CORS.

403 Kesalahan terlarang: CORS Permintaan ini tidak diizinkan

403 ForbiddenKesalahan berikut diterima ketika CORS aturan dalam CORS konfigurasi Anda tidak cocok dengan data dalam permintaan Anda.

Error: HTTP/1.1 403 Forbidden CORS Response: CORS Permintaan ini tidak diperbolehkan.

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 CORS aturan dalam CORS konfigurasi yang cocok dengan data dalam permintaan Anda.

Asal tidak diperbolehkan

OriginHeader dalam CORS permintaan ke bucket Anda harus cocok dengan asal AllowedOrigins elemen dalam CORS konfigurasi Anda. Karakter wildcard ("*") dalam AllowedOrigins elemen akan cocok dengan semua HTTP metode. Untuk informasi selengkapnya tentang cara memperbarui AllowedOrigins elemen, lihat Mengonfigurasi berbagi sumber daya lintas asal () CORS.

Misalnya, jika hanya http://www.example1.com domain yang disertakan dalam AllowedOrigins elemen, maka CORS permintaan yang dikirim dari http://www.example2.com domain akan menerima 403 Forbidden kesalahan.

Contoh berikut menunjukkan bagian dari CORS konfigurasi yang mencakup http://www.example1.com domain dalam AllowedOrigins elemen.

"AllowedOrigins":[ "http://www.example1.com" ]

Agar CORS permintaan yang dikirim dari http://www.example2.com domain berhasil, http://www.example2.com domain harus disertakan dalam AllowedOrigins elemen CORS konfigurasi.

"AllowedOrigins":[ "http://www.example1.com" "http://www.example2.com" ]

Metode tidak diperbolehkan

HTTPMetode yang ditentukan dalam CORS permintaan ke bucket Anda harus cocok dengan metode atau metode yang tercantum dalam AllowedMethods elemen dalam CORS konfigurasi Anda. Access-Control-Request-Method Karakter wildcard ("*") di AllowedMethods akan cocok dengan semua HTTP metode. Untuk informasi selengkapnya tentang cara memperbarui AllowedOrigins elemen, lihat Mengonfigurasi berbagi sumber daya lintas asal () CORS.

Dalam CORS konfigurasi, Anda dapat menentukan metode berikut dalam AllowedMethods elemen:

  • GET

  • PUT

  • POST

  • DELETE

  • HEAD

Contoh berikut menunjukkan bagian dari CORS konfigurasi yang mencakup GET metode dalam AllowedMethods elemen. Hanya permintaan termasuk GET metode yang akan berhasil.

"AllowedMethods":[ "GET" ]

Jika HTTP metode (misalnya,PUT) digunakan dalam CORS permintaan atau disertakan dalam CORS permintaan pra-penerbangan ke bucket Anda tetapi metode tersebut tidak ada dalam CORS konfigurasi Anda, permintaan tersebut akan menghasilkan 403 Forbidden kesalahan. Untuk mengizinkan CORS permintaan ini atau permintaan CORS pra-penerbangan, PUT metode harus ditambahkan ke CORS konfigurasi 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 Anda. CORS Untuk daftar header umum yang dapat digunakan dalam permintaan ke Amazon S3, lihat Header Permintaan Umum. Untuk informasi selengkapnya tentang cara memperbarui AllowedHeaders elemen, lihat Mengonfigurasi berbagi sumber daya lintas asal () CORS.

Contoh berikut menunjukkan bagian dari CORS konfigurasi yang mencakup Authorization header dalam AllowedHeaders elemen. Hanya permintaan untuk Authorization header yang akan berhasil.

"AllowedHeaders": [ "Authorization" ]

Jika header (misalnya Content-MD5 disertakan dalam CORS permintaan tetapi header tidak ada dalam CORS konfigurasi Anda, permintaan akan menghasilkan 403 Forbidden kesalahan. Untuk mengizinkan CORS permintaan ini, Content-MD5 header harus ditambahkan ke CORS konfigurasi Anda. Jika Anda ingin meneruskan keduanya Authorization dan Content-MD5 header dalam CORS permintaan ke bucket Anda, konfirmasikan bahwa kedua header disertakan dalam AllowedHeaders elemen dalam konfigurasi AndaCORS.

"AllowedHeaders": [ "Authorization" "Content-MD5" ]

Header tidak ditemukan sebagai tanggapan CORS

ExposeHeadersElemen dalam CORS konfigurasi Anda mengidentifikasi header respons mana yang ingin Anda buat dapat diakses oleh skrip dan aplikasi yang berjalan di browser, sebagai tanggapan atas permintaan. CORS

Jika objek yang disimpan di bucket S3 memiliki metadata yang ditentukan pengguna (misalnya,x-amz-meta-custom-header) beserta data respons, header kustom ini dapat berisi metadata atau informasi tambahan yang ingin diakses dari kode sisi klien. JavaScript Namun, secara default, browser memblokir akses ke header khusus untuk alasan keamanan. Untuk memungkinkan sisi klien Anda JavaScript mengakses header khusus, Anda harus menyertakan header dalam konfigurasi Anda. CORS

Pada 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 CORS konfigurasi. Sebagai 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 CORS konfigurasi Anda seperti yang ditunjukkan di bawah ini.

"ExposeHeaders": [ "x-amz-meta-custom-header1", "x-amz-meta-custom-header2" ]

Pertimbangan integrasi CORS proxy S3

Jika Anda mengalami kesalahan dan telah memeriksa CORS konfigurasi pada bucket S3 Anda, dan permintaan lintas asal dikirim ke proxy seperti AWS CloudFront, coba yang berikut ini:

  • Konfigurasikan pengaturan untuk mengizinkan OPTIONS metode HTTP permintaan.

  • Konfigurasikan proxy untuk meneruskan header berikut:Origin,Access-Control-Request-Headers, danAccess-Control-Request-Method.

Beberapa proxy menyediakan fitur yang telah ditentukan sebelumnya untuk permintaan. CORS Misalnya, di CloudFront, Anda dapat mengonfigurasi kebijakan yang menyertakan header yang mengaktifkan CORS permintaan saat asal adalah bucket S3. Untuk informasi selengkapnya, lihat Mengontrol permintaan asal dengan kebijakan dan Menggunakan kebijakan permintaan asal terkelola di Panduan CloudFront Pengembang.