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 masalah beberapa masalah CORS umum yang terkait dengan S3.
Topik
403 Kesalahan terlarang: CORS tidak diaktifkan untuk ember ini
403 Forbidden
Kesalahan berikut terjadi saat permintaan lintas asal dikirim ke Amazon S3 tetapi CORS tidak dikonfigurasi pada bucket S3 Anda.
Kesalahan: HTTP/1.1 403 Respons CORS Terlarang: CORS tidak diaktifkan untuk bucket ini
.
Konfigurasi CORS adalah dokumen atau kebijakan dengan aturan yang mengidentifikasi asal yang Anda izinkan untuk mengakses bucket, operasi (metode HTTP) 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 lebih lanjut tentang CORS dan contoh konfigurasi CORS, lihat Elemen CORS.
403 Kesalahan terlarang: Permintaan CORS ini tidak diizinkan
403 Forbidden
Kesalahan berikut diterima ketika aturan CORS dalam konfigurasi CORS Anda tidak cocok dengan data dalam permintaan Anda.
Kesalahan: HTTP/1.1 403 Tanggapan 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
Origin
Header dalam permintaan CORS ke bucket Anda harus cocok dengan asal 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 Mengonfigurasi 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 menyertakan 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 ke bucket Anda harus cocok dengan metode atau metode yang tercantum dalam AllowedMethods
elemen dalam konfigurasi CORS Anda. Access-Control-Request-Method
Karakter wildcard ("*"
) di AllowedMethods
akan cocok dengan semua metode HTTP. Untuk informasi selengkapnya tentang cara memperbarui AllowedOrigins
elemen, lihat Mengonfigurasi 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 tersebut akan menghasilkan 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 Permintaan Umum. Untuk informasi selengkapnya tentang cara memperbarui AllowedHeaders
elemen, lihat Mengonfigurasi berbagi sumber daya lintas asal (CORS).
Contoh berikut menunjukkan bagian dari konfigurasi CORS yang menyertakan 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 tersebut akan menghasilkan kesalahan. 403 Forbidden
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
ExposeHeaders
Elemen dalam konfigurasi CORS Anda mengidentifikasi header respons mana yang ingin Anda akses ke 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 CORS Anda.
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 konfigurasi CORS. 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 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 di bucket S3 Anda, dan permintaan lintas asal dikirim ke proxy seperti AWS CloudFront, coba yang berikut ini:
-
Konfigurasikan pengaturan untuk memungkinkan
OPTIONS
metode untuk permintaan HTTP. -
Konfigurasikan proxy untuk meneruskan header berikut:
Origin
,Access-Control-Request-Headers
, danAccess-Control-Request-Method
. -
Konfigurasikan pengaturan proxy untuk memasukkan 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 pengaturan berikut:
-
Header yang disertakan dalam permintaan asal:
Origin
Access-Control-Request-Headers
Access-Control-Request-Method
-
Cookie yang disertakan dalam permintaan asal: Tidak ada
-
String kueri yang disertakan dalam permintaan asal: Tidak ada
Untuk informasi selengkapnya, lihat Mengontrol permintaan asal dengan kebijakan dan Menggunakan kebijakan permintaan asal terkelola di Panduan CloudFront Pengembang.