

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

# Penyelesaian masalah CORS
<a name="cors-troubleshooting"></a>

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

**Topics**
+ [403 Kesalahan terlarang - CORS tidak diaktifkan untuk ember ini](#cors-not-enabled)
+ [403 Kesalahan terlarang - Permintaan CORS ini tidak diizinkan](#cors-not-enabled)
+ [Header tidak ditemukan dalam respons CORS](#Headers-not-found)
+ [Pertimbangan CORS pada integrasi proxy S3](#cors-in-proxy)

## 403 Kesalahan terlarang: CORS tidak diaktifkan untuk ember ini
<a name="cors-not-enabled"></a>

`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](https://docs.aws.amazon.com/AmazonS3/latest/userguide/enabling-cors-examples.html) 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.](https://docs.aws.amazon.com/AmazonS3/latest/userguide/ManageCorsUsing.html#cors-example-1)

## 403 Kesalahan terlarang: Permintaan CORS ini tidak diizinkan
<a name="cors-not-enabled"></a>

`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
<a name="Origin-not-allowed"></a>

 `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](https://docs.aws.amazon.com/AmazonS3/latest/userguide/enabling-cors-examples.html)).

 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
<a name="Methods-not-allowed"></a>

 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](https://docs.aws.amazon.com/AmazonS3/latest/userguide/enabling-cors-examples.html)). 

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
<a name="Headers-not-allowed"></a>

 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](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTCommonRequestHeaders.html). Untuk informasi selengkapnya tentang cara memperbarui `AllowedHeaders` elemen, lihat [Mengonfigurasi berbagi sumber daya lintas asal (CORS](https://docs.aws.amazon.com/AmazonS3/latest/userguide/enabling-cors-examples.html)). 

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
<a name="Headers-not-found"></a>

 `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 a`200 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
<a name="cors-in-proxy"></a>

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`, dan`Access-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](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/controlling-origin-requests.htm) dan [Menggunakan kebijakan permintaan asal terkelola](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/using-managed-origin-request-policies.html#managed-origin-request-policy-cors-s3) di *Panduan CloudFront Pengembang*. 