# Apa itu CORS? Aturan akses respons antar-origin

Sumber diperiksa. Metode: https://kompli.id/metodologi/.

CORS menentukan kapan browser boleh membagikan respons dari origin lain kepada kode halaman. Ia tidak menggantikan autentikasi, izin data, atau perlindungan terhadap perubahan yang tidak diinginkan.

URL kanonis: https://kompli.id/panduan/owasp/cors/
Sumber diakses: 2026-09-30
Diperbarui: 2026-09-30
Penulis: Kompli
Sumber diperiksa: 2026-09-30


## CORS mengatur apa?

**Cross-origin resource sharing (CORS) mengatur izin bagi browser untuk membagikan respons lintas origin kepada kode halaman.** Origin dibedakan oleh skema, host, dan port. Dua subdomain dapat memiliki origin berbeda meskipun dikelola perusahaan yang sama.

CORS bukan pagar yang membuat API tidak dapat dihubungi dari luar. Klien di luar browser dapat mengirim permintaan sendiri. Sebagian permintaan browser juga dapat terkirim meskipun responsnya tidak boleh dibaca oleh skrip pemanggil.

## Contoh: dasbor dan API berbeda subdomain

Dalam contoh fiktif, dasbor berada di satu subdomain dan API berada di subdomain lain. Tim hanya ingin kode dari dasbor yang disetujui dapat membaca respons API melalui browser.

Tim menetapkan origin tersebut secara tepat pada kebijakan CORS. Pada API, pemeriksaan identitas dan izin pelanggan tetap berjalan untuk setiap permintaan. Mengetahui atau meniru header `Origin` tidak memberi izin membaca tagihan pelanggan lain.

## Hal yang perlu disepakati

| Keputusan | Pertanyaan untuk tim |
| --- | --- |
| Origin yang diizinkan | Apakah daftar benar-benar terbatas pada aplikasi yang memerlukannya? |
| Metode dan header | Mana yang dibutuhkan klien, bukan sekadar semua kemungkinan? |
| Credentials | Apakah integrasi mengirim cookie atau kredensial browser, dan bagaimana pertahanannya? |
| Endpoint publik | Apakah datanya memang boleh dibaca siapa pun tanpa kredensial? |

Jangan memantulkan sembarang nilai `Origin` ke `Access-Control-Allow-Origin`. Jika browser menggunakan credentials, wildcard `*` bukan pengganti origin yang eksplisit. Untuk data yang sengaja publik tanpa credentials, kebijakan wildcard dapat sesuai setelah cakupannya diperiksa.

## Mengapa ada preflight?

Untuk jenis permintaan tertentu, browser mengirim permintaan pendahuluan atau *preflight* dengan metode `OPTIONS`. Server menyatakan metode dan header yang diizinkan sebelum permintaan utama dikirim.

Tidak semua permintaan memerlukan preflight. Karena itu, autentikasi dan otorisasi tidak boleh hanya ditempatkan pada penanganan `OPTIONS`. Kebijakan CORS yang lolos juga tidak membuktikan bahwa perubahan data terlindungi dari [CSRF](/panduan/owasp/csrf/).

## Cara memeriksa perbaikan

Uji pada browser dari origin yang diizinkan dan yang tidak diizinkan, menggunakan akun serta data buatan. Catat permintaan utama, preflight bila ada, header respons, dan apakah kode halaman dapat membaca respons.

Lalu uji akses API secara terpisah: akun tanpa izin harus tetap ditolak meskipun header `Origin` diubah atau permintaan dikirim tanpa browser. Pada operasi perubahan, periksa keadaan data; pesan “CORS error” tidak membuktikan bahwa operasi gagal terjadi.

Lanjutkan ke [keamanan API dan akses data](/panduan/keamanan/keamanan-api-akses-data/). Jangan membuka seluruh origin hanya untuk membuat pesan error pada konsol hilang.
## Sumber rujukan

- [HTML5 Security Cheat Sheet](https://cheatsheetseries.owasp.org/cheatsheets/HTML5_Security_Cheat_Sheet.html) — Cross Origin Resource Sharing
- [HTTP Security Response Headers Cheat Sheet](https://cheatsheetseries.owasp.org/cheatsheets/HTTP_Headers_Cheat_Sheet.html) — Access-Control-Allow-Origin
- [Cross-Site Request Forgery Prevention Cheat Sheet](https://cheatsheetseries.owasp.org/cheatsheets/Cross-Site_Request_Forgery_Prevention_Cheat_Sheet.html) — Custom Headers and CORS

## Perlu membahas kebutuhan tim Anda?

Ceritakan sistem yang dikelola dan kebutuhan pengamanan tim Anda.

[Konsultasikan kebutuhan Anda](https://kompli.id/konsultasi/?topik=keamanan)

## Bacaan terkait

- [Apa itu CSRF? Melindungi tindakan pengguna di website](https://kompli.id/panduan/owasp/csrf/)
- [Keamanan API: akses pengguna, tenant, token, dan batas penggunaan](https://kompli.id/panduan/keamanan/keamanan-api-akses-data/)
- [Security Misconfiguration: pengaturan sistem yang tidak aman](https://kompli.id/panduan/owasp/security-misconfiguration/)

