Berbagi Sumber Daya Lintas Asal (CORS) adalah mekanisme keamanan mendasar dalam pengembangan web modern yang memungkinkan komunikasi aman dan pertukaran data antar domain berbeda. Ini adalah komponen penting agar aplikasi web berfungsi dengan baik, terutama dalam konteks sistem terdistribusi dan infrastruktur berbasis cloud. CORS memungkinkan aplikasi web yang berjalan di satu domain (asal) untuk meminta sumber daya, seperti font, gambar, skrip, atau data API, dari domain berbeda tanpa melanggar Same-Origin Policy (SOP) bawaan browser web. SOP adalah fitur keamanan yang membatasi halaman web untuk berinteraksi dengan sumber daya dari sumber berbeda, melindungi pengguna dari potensi kerentanan keamanan seperti pemalsuan permintaan lintas situs (XSRF) dan serangan skrip lintas situs (XSS).
Dalam lingkungan yang mendukung CORS, klien (browser web) dan server (penyedia sumber daya) berpartisipasi dalam proses negosiasi untuk menentukan apakah pembagian sumber daya lintas asal diperbolehkan. Proses negosiasi ini, yang dikenal sebagai protokol CORS, melibatkan pertukaran header HTTP antara klien dan server. Protokol CORS terdiri dari dua komponen utama: permintaan preflight dan permintaan aktual.
Permintaan preflight adalah permintaan HTTP OPTIONS yang dikirim oleh klien sebelum permintaan sebenarnya, untuk menentukan apakah server mendukung pengaturan CORS yang diperlukan agar permintaan sebenarnya berhasil. Server merespons dengan header spesifik terkait CORS, yang menunjukkan kesediaannya untuk menerima permintaan lintas asal dan ketentuan atau batasan tambahan apa pun (seperti metode dan header HTTP yang diizinkan). Jika permintaan preflight berhasil, klien melanjutkan dengan permintaan sebenarnya, yang dapat berupa HTTP GET, POST, PUT, DELETE, atau metode lain yang didukung.
Untuk mendukung CORS, server web dan aplikasi harus menyertakan header HTTP terkait CORS yang sesuai dalam responsnya. Header ini meliputi:
-
Access-Control-Allow-Origin
: Menunjukkan asal (domain) yang diizinkan untuk mengakses sumber daya. Ini dapat disetel ke domain tertentu atau wildcard (*) untuk mengizinkan domain apa pun. -
Access-Control-Allow-Methods
: Mencantumkan metode HTTP yang diizinkan untuk permintaan lintas asal, seperti GET, POST, PUT, DELETE, dll. -
Access-Control-Allow-Headers
: Menentukan header HTTP yang diizinkan untuk permintaan lintas asal, seperti Tipe Konten, Otorisasi, dll. -
Access-Control-Expose-Headers
: Mencantumkan header yang dapat diakses klien dalam respons server, memungkinkan klien membaca header khusus dari server. -
Access-Control-Allow-Credentials
: Menunjukkan apakah permintaan lintas asal dengan cookie atau kredensial lainnya diperbolehkan. -
Access-Control-Max-Age
: Menentukan waktu maksimum (dalam detik) klien dapat menyimpan hasil permintaan preflight dalam cache, sehingga mengurangi kebutuhan akan beberapa permintaan preflight.
Di AppMaster, aplikasi backend yang dihasilkan dibuat dengan dukungan CORS, memungkinkan integrasi tanpa batas dengan aplikasi web dan seluler yang mungkin dihosting di domain berbeda. Selain itu, platform AppMaster menyediakan antarmuka yang mudah digunakan untuk mengelola pengaturan CORS, sehingga memudahkan pengembang untuk mengonfigurasi header terkait CORS yang sesuai agar sesuai dengan kasus penggunaan spesifik mereka. Hal ini memastikan bahwa aplikasi yang dihasilkan sesuai dengan praktik terbaik dalam keamanan web sekaligus memberikan fleksibilitas dalam penerapan dan integrasi dengan layanan lain.
Selain dukungan bawaan AppMaster untuk CORS, pengembang web juga dapat memanfaatkan berbagai perpustakaan sumber terbuka dan solusi middleware untuk mengaktifkan CORS dalam aplikasi mereka. Beberapa perpustakaan populer meliputi:
-
cors
untuk Node.js dan Express -
rack-cors
untuk aplikasi Ruby dan Rack -
django-cors-headers
untuk aplikasi web Django -
flask-cors
untuk aplikasi web Flask
Kesimpulannya, Cross-Origin Resource Sharing (CORS) adalah aspek penting dalam pengembangan web modern yang memungkinkan berbagi sumber daya dan data secara aman antar domain berbeda. Hal ini memberikan solusi penting untuk mengatasi keterbatasan Kebijakan Same-Origin, sambil tetap menjaga tingkat keamanan yang diperlukan dalam dunia aplikasi web yang saling terhubung. Platform no-code AppMaster menerapkan mekanisme CORS, menghasilkan aplikasi backend, web, dan seluler yang mematuhi praktik terbaik dalam keamanan web. Dengan cara ini, AppMaster memberdayakan pengembang dan bisnis untuk membuat aplikasi yang skalabel dan aman dengan lebih cepat dan hemat biaya dibandingkan sebelumnya.