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.
Topik
403 Kesalahan terlarang: tidak CORS diaktifkan untuk ember ini
403 Forbidden
Kesalahan 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 Forbidden
Kesalahan 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
Origin
Header 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
ExposeHeaders
Elemen 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-header2
Tidak 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.